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

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

蝴蝶不菲
浏览 427回答 1
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,因为他们都指向同一个地址。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript