2016-03-22 10 views
3

Lasst uns sagen, dass wir diese Klasse haben:DefineProperty auf verschachtelte Klassenobjekt

var MyClass = function() { 
    this.oneProp = 'one prop'; 
    this.myProps = { 
     prop1: 'my prop1', 
     prop2: 'my prop2' 
    }; 
}); 

Wie kann ich einen Getter/Setter konfigurieren auf myProps.prop1 mit Object.defineProperty so dass, wenn ich myProps.prop1 ändern, wird der Wert von myProps.prop2 ist Beispiel: '_'+prop1?

fand ich eine einfache Möglichkeit, einen Getter/Setter auf oneProp mit zu definieren:

Object.defineProperty(MyClass.prototype, 'oneProp', { 
    ... 
}); 

Aber ich kann nicht herausfinden, wie man das gleiche auf myProps.prop1 zu tun.

Dank

+0

Sie keine Eigenschaften von Instanzeigenschaften auf dem Prototyp – Bergi

Antwort

2

Sie können die Getter direkt im wörtlichen Objekt schreiben.

var MyClass = function() { 
 
    this.oneProp = 'one prop'; 
 
    this.myProps = { 
 
     prop1: 'my prop1', 
 
     get prop2() { return '_' + this.prop1; }, 
 
     set prop2(v) { this.prop1 = v; } 
 
    }; 
 
} 
 

 
var x = new MyClass; 
 
document.write(x.myProps.prop2 + '<br>'); 
 
x.myProps.prop2 = 42; 
 
document.write(x.myProps.prop2 + '<br>');

+1

Sie für Ihre schnelle, vollständige und gute Antwort danken setzen kann Nina – Aziule

Verwandte Themen