Ben belirleyiciler ve alıcılar ile bir nesne oluşturmak için çalışıyorum ve bu benim kodudur:Google Chrome Object.defineProperty'de yanlış davranış var mı?
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 = new Oyuncu (10);
defineProperty seçeneklerinin writable
özelliği false olarak ayarlanmış olsa bile, aşağıdaki hatayı alıyorum:
Invalid property. A property cannot both have accessors and be writable or have a value, #<Object>
writable
elbette true ayarlandığında aynı oluyor
, ancak hata writable
satırını kaldırırsam kaybolur.
Yanlış bir şey yapıyorum mu, yoksa bu bir hata mı? Bu Object.defineProperty
için Mozilla MDN bu açıklık, Google Chrome'da Sürüm 30.0.1599.66
Hata tanımlayıcı görünüyor ... Yazılabilir olmayan bir özellik için neden bir getter ve ayarlayıcınız var? – elclanrs
Her iki durumda da hata görüntüleniyor, yazılabilir: true ve yazılabilir: false. Bu garip değil mi? – Loupax
Sadece “yazılabilir” ve “değer” veya “get” ve “set” niteliklerine sahip olabilirsiniz. Yazılabilir 'seçeneğini belirttiğinizden,' get 'veya 'set' kullanamazsınız. Bkz. [Mozilla MDN] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty) –