search

Home  >  Q&A  >  body text

前端面试题のjavascript引用类型

这个属于哪个知识点?好像看到过相关知识,但想不起来了

var a = {"x": 1};
var b = a;
a.x = 2;
b.x; 

a = {"x":3};
console.log(b.x);

怪我咯怪我咯2847 days ago511

reply all(5)I'll reply

  • 怪我咯

    怪我咯2017-04-10 14:31:47

    var a = {"x": 1};    //对象是引用类型,这里把对象{"x": 1}的引用地址赋值给变量a
    var b = a;    //把a所引用的对象地址赋值给b,此时a和b指向同一个对象
    a.x = 2;    //把a所指向对象的属性x设置为2,此时该对象为{"x": 2}
    b.x;     //由于a和b指向同一个对象,所以b.x = a.x = 2
    
    a = {"x":3};    //这里重新对a进行赋值,把一个新对象{"x": 3}的引用地址赋值给变量a,此时a指向这个新对象{"x": 3},而b仍然指向原来的对象{"x": 2}
    console.log(b.x);    //这里输出2就顺理成章了
    

    整个过程就像我在注释里写的那样,最后console.log(b.x)的值为2
    建议题主可以翻阅一下《Javascript高级程序设计》,我之前看的是第二版,有一章讲解了引用类型和值类型,看完应该就懂了,或者参考一下网上各路大神的博客

    reply
    0
  • 天蓬老师

    天蓬老师2017-04-10 14:31:47

    见本人此贴:http://segmentfault.com/q/1010000000507424

    reply
    0
  • 黄舟

    黄舟2017-04-10 14:31:47

    a = {"x":3};这句a估计是new,另寻新欢了,b还是原来的b。可以这么理解吧。

    reply
    0
  • PHP中文网

    PHP中文网2017-04-10 14:31:47

    js中对象是引用类型的,记住这一点,只要寻找变量当前指向哪一个对象即可

    reply
    0
  • PHP中文网

    PHP中文网2017-04-10 14:31:47

    属于数据类型中引用类型这类知识点的

    reply
    0
  • Cancelreply