我試圖創建getter和setter方法的對象,這是我的代碼:Google Chrome Object.defineProperty中的錯誤行爲?
var Player = function(height){
var _height = height;
Object.defineProperty(this, 'height', {
enumerable: false
, configurable: true
, writable: false
, get: function(){return _height;}
, set: function(val){_height = val;}
});
}
VAR myPlayer =新播放器(10);
即使的defineProperty選項writable
屬性設置爲false,我得到以下錯誤:
Invalid property. A property cannot both have accessors and be writable or have a value, #<Object>
當writable
設爲當然是真的一樣正在發生,但錯誤如果我刪除writable
行消失。
我做錯了什麼,或者這是一個錯誤?這是發生在谷歌瀏覽器,版本30.0.1599.66
錯誤似乎是描述性的......爲什麼你會得到一個不可寫屬性的getter和setter? – elclanrs
錯誤在兩種情況下都得到顯示,'writable:true'和'writable:false'。這不奇怪嗎? – Loupax
您只能擁有'writable'和'value'或'get'和'set'屬性,而不是它們的混合。既然你指定了'writable',你就不能使用'get'或'set'。請參閱[Mozilla MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty) –