Ich versuche, ein Objekt mit Getter und Setter zu schaffen, und dies ist mein Code:Falsches Verhalten 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);
Auch wenn die writable
Eigentum der DefineProperty Optionen auf false gesetzt ist, ich die folgende Fehlermeldung erhalten:
Invalid property. A property cannot both have accessors and be writable or have a value, #<Object>
Das gleiche geschieht, wenn die writable
auf true natürlich gesetzt, aber der Fehler verschwindet, wenn ich die writable
Zeile entferne.
Mache ich etwas falsch, oder ist das ein Fehler? Dies geschieht auf Google Chrome, Version 30.0.1599.66
Fehler scheint deskriptiv ... Warum haben Sie einen Getter und Setter für eine nicht beschreibbare Eigenschaft? – elclanrs
Der Fehler wird in beiden Fällen "schreibbar: wahr" und "schreibbar: falsch" angezeigt. Ist das nicht komisch? – Loupax
Sie können nur entweder die Attribute 'beschreibbar' und' Wert' oder 'Get' und' Set' haben, keine Mischung davon. Da Sie 'writable' angeben, können Sie' get' oder 'set' nicht verwenden. Siehe [Mozilla MDN] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty) –