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,這么寫相當(dāng)于在原型對(duì)象中加了新的屬性,實(shí)例的指針指向prototype還是沒(méi)變的,所以可以顯示name。但是Person.prototype = { ... }這么寫,相當(dāng)于是重寫了原型對(duì)象,那么剛才的實(shí)例中的指針就失效了,所以name是undefined。這樣理解沒(méi)錯(cuò)吧?但是,這個(gè)例子中: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依然可以正常彈出???
關(guān)于JavaScript中原型的動(dòng)態(tài)性問(wèn)題
收到一只叮咚
2018-09-12 10:09:39