sto cercando di creare un oggetto con setter e getter, e questo è il mio codice:Comportamento errato in 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 = new Player (10);
Anche se la proprietà delle opzioni defineProperty writable
è impostata su false, ottengo il seguente errore:
Invalid property. A property cannot both have accessors and be writable or have a value, #<Object>
Lo stesso sta accadendo quando il writable
è impostato su vero, naturalmente, ma l'errore scompare se rimuovo la riga writable
.
Sto facendo qualcosa di sbagliato, o si tratta di un bug? Ciò sta accadendo su Google Chrome, versione 30.0.1599.66
L'errore sembra descrittivo ... Perché dovresti avere un getter e setter per una proprietà non scrivibile? – elclanrs
L'errore viene visualizzato in entrambi i casi, 'writable: true' e' writable: false'. Non è strano? – Loupax
Puoi solo avere gli attributi 'writable' e' value' o 'get' e' set', non una qualsiasi combinazione di essi. Dato che specifichi 'writable', non puoi usare' get' o 'set'. Vedi [Mozilla MDN] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty) –