2015-01-06 29 views
1

我有這個片段的財產,但不明白爲什麼它會拋出試圖將值分配給定義爲可寫的屬性時出現錯誤:無法指定定義爲可寫

function Constructor() 
{ 
    Object.seal(this); 
} 

Object.defineProperties(Constructor.prototype, 
{ 
    field: {value: null, writable: true} 
}); 


var instance = new Constructor(); 

instance.field = 'why this doesn\'t work??'; 

回答

0

分配給對象屬性爲總是賦值給對象本身的本地「自己」屬性。原型上有一個類似命名的屬性並不重要。你的實例是一個密封的對象,所以你不能寫入它。

如果你打電話給

Object.getPrototypeOf(instance).field = "this works"; 

你會好起來的。