如何在Javascript中实现以下功能
1) var MyObject={
2) tableView:true,
3) chartView:!(this.tableView)
4) }
第3行的代码无效。那条线路有什么不对?
每当tableView从代码设置时,我基本上想要做的是将“chartView”设置为“tableView”的对面。
答案 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相反。