zoukankan      html  css  js  c++  java
  • 3_1:语言基础:原始值 与 引用值

    一  原始值 与 引用值

    . 原始值 就是最简单的数据
    . 引用值 则是由多个值构成的对象
    . 把一个值赋给变量时 JavaScript引擎必须确定这个值是原始值还是引用值

    . 保存原始值的变量 是按值(by value)访问的 因为我们操作的就是存储在变量中的实际值
    . 引用值是保存在内存中的对象.
    . 与其他语言不通 JavaScript不允许直接访问内存位置 因此也就不能直接操作对象所在的内存空间.
    . 在操作对象时 我们实际操作的是该对象的引用,而非实际对象本身.
    . 保存引用值的变量 是按引用(by reference)访问的
    . 注意点:在很多语言中 字符串是使用对象表示的 因此被认为是引用类型 ECMAScript 打破了这个惯例

    1)动态属性

    . 原始值和引用值的定义方式很类似 都是创建一个变量 然后给它赋一个值.

    . 对于引用值而言 可以随时添加 修改 删除其属性和方法.

    . 原始值不能有属性 尽管给原始值添加属性不会报错.

    2)复制值

    . 原始值复制:let a = 10; let b = a; 把a拷贝了一个给b 它们是两个完全独立的变量 互不影响

    . 引用值复制:复制的是对象的引用 也就是说a对象和b对象 它们在内存堆中是一个对象

    3)传递参数

    4)确定类型

    . typeof 操作符 最适合判断 一个变量是否是原始类型
    更确切的说:判断一个变量是否为 字符串 数值 布尔值 或 undefined 用typeof是最好的方式
    如果值是对象或null 那么typeof 返回 object
    typeof 对原始值非常有用 但是对引用值用处不大 我们通常不关心一个值是不是对象 而是想知道它是什么类型的对象

    . instanceof 操作符 判断对视的引用类型

    小结:

    . 原始值大小固定 因此保存在栈内存中
    . 从一个变量 到 另一个变量 复制原始值 会创建该值的第二个副本.
    ----------------------------------------------------
    . 引用值是对象 存储在堆内存中
    . 包含引用值的变量 实际上只包含 指向响应对象的指针 而不是对象本身
    . 从一个变量 到 另一个变量 复制引用值 只会复制指针 因此结果是 两个变量都指向同一个对象
    -----------------------------------------------------------------------------
    typeof 操作符 可以确定值的原始类型

    instanceof 操作符 用于确保值的 引用类型
  • 相关阅读:
    621
    Java里的日期和时间学习
    [置顶] 宏扩展和参数扫描
    android 按字母搜索
    使用Eclipse EE开发web项目
    免解压版的Mysql的启动脚本,并且执行导入(windows)
    高焕堂《android从程序员到架构师之路》 YY讲坛直面大师学习架构设计
    Android 计时与倒计时
    poj 1564 Sum It Up | zoj 1711 | hdu 1548 (dfs + 剪枝 or 判重)
    字符型驱动程序的结构框架
  • 原文地址:https://www.cnblogs.com/fuyunlin/p/14818129.html
Copyright © 2011-2022 走看看