2016-05-30 10 views
0

Wie bekomme ich Zugriff auf die Eigenschaften oder Methode des Hauptobjekts, von Sub-obiect-Ebene zwei (Sub3). Wenn möglich möchte ich vermeiden, dass Lösungsverkettungen dies zurückgeben.Zugriff aus Unterobjekt in JavaScript

Obj = function() {}; 
Obj.prototype = { 
    name: 'name', 
    main: function(){ 
     console.log(this.name); 
    }, 
    subobject: { 
     sub2: function() { 
      console.log(this); 
     }, 

     sub3: function() { 
      console.log(this.name); // How access to Obj.name ?? 
     } 

    } 
} 
o = new Obj(); 
o.main(); // return name 
o.subobject.sub2(); // return subobject 
o.subobject.sub3(); // return undefined 

Antwort

2

Mit Ihrer aktuellen Syntax können Sie nicht. Denn für sub2 und sub3 ist die this Variable Obj.prototype.subobject.

Sie haben mehrere Wahl:

  • Die offensichtlichste: keine suboject verwenden.
  • erstellen subobject, sub2 und sub3 im Konstruktor

    Obj = function() { 
        var self = this; 
    
        this.subobject = { 
         sub1: function() { console.log(self); } 
        } 
    } 
    
  • Verwenden bind bei jedem Aufruf:

    o.subobject.sub2.bind(o)(); 
    
Verwandte Themen