如何根据Object中某个其他键的值自动为另一个键赋值

时间:2012-04-06 09:27:09

标签: javascript

如何在Javascript中实现以下功能

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

第3行的代码无效。那条线路有什么不对?

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

3 个答案:

答案 0 :(得分: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.

答案 1 :(得分:1)

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

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

答案 2 :(得分: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相反。