同じオブジェクト内のプロパティを変数として使いたかった。
var obj = { x : 100, y : x + 100//Uncaught ReferenceError: x is not defined } console.log(obj.y);
これではエラーが出てしまった。
代替案を考えよう。参考にしたのはこれ。
javascript - Reuse a property value as a variable within the same object - Stack Overflow
オブジェクト宣言後に設定する
var obj = { x : 100 } obj.y = obj.x + 100; console.log(obj.y);//200
オブジェクトの外で、新しいプロパティを宣言する。
値に関数を使う
var obj = { x : 100, y : function(){ return this.x + 100; } } console.log(obj.y());//200
関数を値として扱えるから、それをyの値にする。そこでthisを用いる。
クラスっぽいものをつくる
function number(){ this.x = 100; this.y = this.x + 100; } var test = new number(); console.log(test.y);//200
jsでクラスって使うと、詳しい人に怒られそうなので、ここでは「っぽい」とつけることにする。
ちょっと長いけど、綺麗に書けた。