2

你如何在Javascript中实现以下内容

1) var MyObject={
2)    tableView:true,
3)    chartView:!(this.tableView)
4) }

第 3 行的代码不起作用。那行有什么问题?

每当从代码中设置 tableView 时,我基本上想要做的就是将“chartView”设置为“tableView”的对面。

4

3 回答 3

4

由于您正在创建对象,this因此不会绑定到该对象。此外,由于您希望chartView始终计算 的相反值tableView,即使后者进一步更改,函数将是更好的方法:

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

现在你可以这样做:

var chartView = MyObject.chartView();  // false.
MyObject.tableView = false;
chartView = MyObject.chartView();      // true.
于 2012-04-06T09:30:52.633 回答
1

您不能使用它来引用对象字面量属性中的对象。您可以在作为该对象方法的函数中使用它:

var MyObject = {
  tableView: true,
  chartView: function () {
    return !this.tableView;
  }
}
于 2012-04-06T09:32:16.130 回答
0

根据您的要求,这也可能是一个答案,

 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

这样,您将始终在 chartView 中使用一个函数调用与 tableView 相反。

于 2012-04-06T09:57:37.743 回答