zoukankan      html  css  js  c++  java
  • JavaScript对象的指向问题

    JavaScript对象的指向问题

    标签(空格分隔): JavaScript 对象


    在接触了JavaScript之后,我们常听到一句话就是一切皆对象,意思是说除了object以外,JavaScript中的字符串,数字,true,false,undefined,null,NaN,hash等等都是对象。
    对象是可变的,意思是说我们通过引用而不是一个值来操作对象,下面用一段代码来看这个问题:

    var x={a:1};//这里声明一个对象X,里面包含属性a,它的值为1
    var y=x;//这里声明一个变量y,他的值等于x
    y.a=2;//将y中属性a的值更改为2
    console.log(x.a)//打印对象x中属性a=值
    

    通过上面的例子我们不难在控制台中得到结果为数字2,我们明明更改的是对象y的属性,为什么对象x也发生了变化呢?

    1. 声明变量x时,JavaScript解释器随机分配了一个内存地址给它,假设为(0X90901)
    2. 生成的内存地址又指向了真正存储在内存中的对象{a:1}
    3. 当声明变量y的时候这个由于语句y=x,所以将y指向了同一个内存地址0X90901
    4. 执行y.a=2语句时,查找y在内存中的属性a,我们知道y的地址指向0X90901,所以顺着地址指向修改了对象{a:1}中属性a的值
    5. console.log(x.a)由于属性a的值发生了更改,但是变量x指向的地址没有变化,所以打印x.a的值为2

    原理如图:

  • 相关阅读:
    iOS开发UI篇—xib的简单使用
    iOS开发UI篇—字典转模型
    iOS开发UI篇—九宫格坐标计算
    iOS开发UI篇—懒加载
    2020121301-01
    2020120501-01
    2020113001-梦断代码-3
    2020112801-01
    2020112401
    2020112201-1
  • 原文地址:https://www.cnblogs.com/hanqingtao/p/9083891.html
Copyright © 2011-2022 走看看