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

 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

这是为什么?能详细解释一下对象在赋给一个变量的时候内部的工作原理么

阅读 8.9k
1 个回答

第一个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,因为他们都指向同一个地址。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题