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依然可以正常彈出???
關于JavaScript中原型的動態性問題
收到一只叮咚
2018-09-12 10:09:39