Home

Lesson 09: ES5 Properties

jsBin

Überschrift

Articles

Erzeugung

Leeres Objekt

var k1 = Object.create(null);

Properties

Bisher:


k1.nr = 1;
k1['stand'] = 0;
        

Neu (verbose):

ES5: Property Attributes


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:

Links