Überschrift
Articles
Erzeugung
Leeres Objekt
var k1 = Object.create(null);
Properties
Bisher:
k1.nr = 1;
k1['stand'] = 0;
Neu (verbose):
var cust = Object.create(null);
Object.defineProperty(cust, 'first_name', {
value: 'Klaus'
, writable: true });
Object.defineProperty(cust, 'last_name', {
value: 'Lage'
, writable: true });
// () → String
// Returns the full name of object.
function get_full_name() {
return this.first_name + ' ' + this.last_name
}
// (new_name:String) → undefined
// Sets the name components of the object, from a full name.
function set_full_name(new_name) { var names
names = new_name.trim().split(/\s+/);
this.first_name = names[0] || '';
this.last_name = names[1] || '';
}
Object.defineProperty(cust, 'name', {
get: get_full_name
, set: set_full_name
, configurable: true
, enumerable: true
, writeable: true
});
Neu (literal):
var a = {
nr: 4711,
name: 'Berliner Weisse',
_preis: 0,
get preis() {return this._preis },
set preis(value) { if( value < 0) throw "Negativer Preis"; this._preis = value;}
};
Methoden
Hier bleibt alles wie gehabt: Methoden werden definiert, indem wir einer Property eine
Funktionsreferenz zuweisen. Auch die this
-Auflösung bleibt natürlich gleich.
Aufruf über:
- Als Methode:
obj.method()
- Über apply bzw (besser) call:
func.apply(obj,args)