Javascriptで次のことをどのように達成しますか
1) var MyObject={
2) tableView:true,
3) chartView:!(this.tableView)
4) }
行番号3のコードが機能していません。その行の何が問題になっていますか?
私が基本的にやりたいのは、コードからtableViewが設定されるたびに、「chartView」を「tableView」の反対に設定することです。
Javascriptで次のことをどのように達成しますか
1) var MyObject={
2) tableView:true,
3) chartView:!(this.tableView)
4) }
行番号3のコードが機能していません。その行の何が問題になっていますか?
私が基本的にやりたいのは、コードからtableViewが設定されるたびに、「chartView」を「tableView」の反対に設定することです。
オブジェクトを作成中なので、this
はそのオブジェクトにバインドされていません。chartView
さらに、常に反対の評価をしたいのでtableView
、後者がさらに変更されたとしても、関数はより良いアプローチになります。
var MyObject = {
tableView: true,
chartView: function() {
return !this.tableView;
}
};
今、あなたはすることができます:
var chartView = MyObject.chartView(); // false.
MyObject.tableView = false;
chartView = MyObject.chartView(); // true.
これを使用して、オブジェクトリテラルのプロパティでオブジェクトを参照することはできません。これは、そのオブジェクトのメソッドである関数内で使用できます。
var MyObject = {
tableView: true,
chartView: function () {
return !this.tableView;
}
}
あなたの要件に基づいて、これも答えかもしれません、
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
このようにすると、1回の関数呼び出しでchartViewのtableViewの反対が常に発生します。