[英]Object.create method in javascript
作為javascript的初學者,我試圖從這里了解Object.create()方法
https://developer-new.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/create
在示例代碼中,第18行。創建一個accessable屬性,其writeable設置為true。 我還讀到可寫只適用於數據描述符。
試過跑,
var o = Object.create(Object.prototype, {
// foo is a regular "value property"
foo: {
writable:true, configurable:true, value: "hello"
},
// bar is a getter-and-setter (accessor) property
bar: {
writable: true,
configurable: false,
get: function() { return 10 },
set: function(value) { console.log("Setting `o.bar` to", value) }
}
});
console.log(o);
我得到invalid property error
。
問題是writable
和set
/ get
是互斥的。 該代碼在Chrome中生成此有用的錯誤:
Invalid property. A property cannot both have accessors and be writable...
這有一定的邏輯意義:如果您在屬性上set
/ get
訪問器,則該屬性永遠不會被寫入和/或讀取,因為任何讀取/寫入它的嘗試都將被訪問器函數攔截。 如果將屬性定義為writable
屬性並為其提供訪問器函數,則同時說:
錯誤只是阻止您指定矛盾。 我假設你寫了一個getter和setter,你真的不希望該屬性是writable
。 只需刪除該行,您的代碼就可以完美運行。
遲到的回答,不是在尋找選票,但希望這會有所幫助。
有兩種屬性。 每個屬性都是:
具有以下四個屬性的data屬性:
或者具有以下四個屬性的訪問者屬性:
因此,沒有任何屬性可以兼具get
和writable
。 這就是JavaScript的方式! 有關詳細信息,請參閱ECMAScript標准的第8.6節。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.