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
这是为什么?能详细解释一下对象在赋给一个变量的时候内部的工作原理么
第一个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,因为他们都指向同一个地址。