2012-04-06 5 views

Antwort

4

Da Sie gerade das Objekt erstellen, ist this nicht an dieses Objekt gebunden. Darüber hinaus, da Sie chartView wollen immer das Gegenteil von tableView zu bewerten, auch wenn diese Veränderungen weiter auf der ganzen Linie, wäre eine Funktion ein besserer Ansatz sein:

var MyObject = { 
    tableView: true, 
    chartView: function() { 
     return !this.tableView; 
    } 
}; 

Jetzt können Sie tun:

var chartView = MyObject.chartView(); // false. 
MyObject.tableView = false; 
chartView = MyObject.chartView();  // true. 
+0

Vielen Dank .. – furiabhavesh

1

Sie können damit nicht auf ein Objekt in den Eigenschaften eines Objektliterals verweisen. Sie können dies in einer Funktion verwenden, die eine Methode dieses Objekts ist:

var MyObject = { 
    tableView: true, 
    chartView: function() { 
    return !this.tableView; 
    } 
} 
+0

Oh ja .. Ich habe dieses Konzept der Verwendung von "das" in einer Funktion vergessen. Danke, dass du mich erinnert hast. – furiabhavesh

0

auf Ihrer Anforderung basiert, das auch eine Antwort sein kann,

var MyObject = { 
     view : function(bool){ 
     this.tableView = bool; 
     this.chartView = !(bool); 
     } 
     tableView: true, 
     chartView: false 
    } 

    MyObject.view(false) 

    console.log(MyObject.tableView);  // Outputs false 
    console.log(MyObject.chartView)  // Outputs true 

diese Weise können Sie immer Gegenteil von dem Tableview haben in chartView mit einem einzigen Funktionsaufruf.

Verwandte Themen