为了账号安全,请及时绑定邮箱和手机立即绑定

js关于对象内存地址的一些问题点过来

js关于对象内存地址的一些问题点过来

蝴蝶不菲 2018-12-27 22:13:53
 function Animal(name){            this.name=name;            this.hobby = function(){                console.log(this.name+"爱抓老鼠");            }        }        var cat =new Animal();        var dog =new Animal();        console.log(cat==dog) //false 这里是false    var Animal = {        name : "aaa"    }    var a = Animal;    var b = Animal;    b.age= 21;    console.log(a==b) //true 这里是true这是为什么?能详细解释一下对象在赋给一个变量的时候内部的工作原理么
查看完整描述

1 回答

?
慕慕森

TA贡献1856条经验 获得超17个赞

第一个false是因为 cat和dog是Animal的两个不同实例对象,各自传入的name属性值都不一样,这里的属性值都是在各自的实例对象上的,是两个不一样的对象,所以是false。

第二个ture是因为你的Animal是一个对象,var a = Animal; var b = Animal;都是引用赋值,a和b都指向了Animal的内存地址,所以a和b指向的是同一个对象,所以是ture,你给b.age=21 其实就是Animal.age=21,同样a.age这时候也是21,因为他们都指向同一个地址。


查看完整回答
反对 回复 2019-01-05
  • 1 回答
  • 0 关注
  • 426 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信