function Person(){ }
var friend = new Person();
Person.prototype.constructor = Person;
Person.prototype.name = "Nima";
Person.prototype.age = 23;
alert(friend.name);这样写friend.name可以正常显示;function Person(){ }
var friend = new Person(); Person.prototype = {
constructor:Person,
name : "Nima",
age : 23
}
alert(friend.name);这样写friend.name则是undefined;原因是Person.prototype.name,这么写相当于在原型对象中加了新的属性,实例的指针指向prototype还是没变的,所以可以显示name。但是Person.prototype = { ... }这么写,相当于是重写了原型对象,那么刚才的实例中的指针就失效了,所以name是undefined。这样理解没错吧?但是,这个例子中:var obj = { name : 'Linken', gender :'male', age : 23, id : 'teacher'
}
var a = obj;
obj = { gender :'male', age : 23, id : 1234
}
alert(a.name);为什么a.name依然可以正常弹出???
添加回答
举报
0/150
提交
取消