我是新來的Javascript,我已經試過這樣的:如果我顯示object2.a無法更改對象屬性值
object1 = {};
object2 = Object.create(object1, {a:{value:1}});
object2.a = 2;
然後,它是仍然1而不是2.這是爲什麼?
謝謝。
我是新來的Javascript,我已經試過這樣的:如果我顯示object2.a無法更改對象屬性值
object1 = {};
object2 = Object.create(object1, {a:{value:1}});
object2.a = 2;
然後,它是仍然1而不是2.這是爲什麼?
謝謝。
因爲Object.create()
是不是你的想法。
看到這個ECMAScript 5: Object creation and property definition
有我們可以控制的屬性附加三個方面,每個給定一個布爾值:
writable
:控制屬性是否可以分配。如果false
,分配嘗試將失敗。僅適用於數據描述符。enumerable
:控制此屬性是否會出現在for...in
循環中。configurable
:控制是否可以刪除該屬性,以及是否可以更改其屬性描述符(writable
除外)。如果未提供,其中每個默認設置爲
false
。
所以你需要的是:
var object1 = {};
var object2 = Object.create(object1, {
a: {
value: 1,
writable: true
},
});
object2.a = 2;
好玩:)
試試這個:
var object1 = {};
var object2 = Object.create(object1, {a:{value:1,writable: true}});
object2.a = 2;
這個帖子有關對象的創建模式看一看,你將有一個更好的瞭解object1之間的差異在你的例子中的object2。 http://www.codeproject.com/Articles/687093/Understanding-JavaScript-Object-Creation-Patterns – buzzsaw