1
看看代碼下面。我會除了輸出將是123-admin 0-null。但相反,它的123管理員0管理員。你能解釋一下爲什麼新的關鍵字不能取代整個用戶對象嗎?Javascript新的關鍵字不重置所有屬性
function User()
{
}
User.prototype.id=0;
User.prototype.role={name:null}
var user = new User();
user.role.name = 'admin';
user.id = 123;
window.document.write(" "+user.id+"-"+user.role.name);
user = new User();
window.document.write(" "+user.id+"-"+user.role.name);
同樣在的jsfiddle: https://jsfiddle.net/tfgx77au/6/
但id屬性更改爲0後的第二個新而角色沒有改變。有什麼區別? –
@NatanRubinstein區別在於「id」屬性是*直接*每個'User'實例的屬性。您設置的「名稱」屬性不是 - 它是(共享)「角色」屬性的屬性。 「角色」在原型對象上,因此被所有實例共享。 – Pointy
@NatanRubinstein當你做一個對象屬性賦值時,比如'user.id = 123;'* always *直接將屬性放在對象上,即使原型上已經有一個類似命名的屬性。換句話說,你不能通過實例直接分配給原型屬性*。但是,您可以*爲原型上的共享對象的屬性賦值。這是最後一個''。 – Pointy