誰かが私に説明することができます。なぜグローバルなインスタンスのメソッド値をローカルに設定するだけで上書きすることができますか、なぜ同様のことができないのですか?変数?JavaScript、MooTools - 変数/スコープの変数/グローバル変数
window
オブジェクト階層を使用するために変数にアクセスする唯一の方法はありますか?それとももっと短い方法がありますか?
(function() {
console.log(this);
var someVar = this.someVar = false;
var subClass = new Class({
test: false,
setValue: function(value) {
this.test = value
}
});
var subPub = this.subPub = new subClass();
var MainClass = new Class({
rewriteVar: function() {
console.log("someVar = " + someVar); // returns global value
console.log("subPub.test = " + subPub.test); // returns global value
someVar = true;
console.log("someVar local: " + someVar); // returns new local value
console.log("someVar global: " + window.someVar); // returns old global value
subPub.setValue(true);
console.log("subPub.test local: " + subPub.test); // returns new local value
console.log("subPub.test global: " + window.subPub.test) // returns new global value
}
});
/* var someObj = this.someObj = {};
var someVar = someObj.someMeth = false;
// And why is this possible?
var MainClass = new Class({
rewriteVar: function() {
someObj.someMeth = true;
console.log(window.someObj.someMeth); // returns new global value
}
}); */
window.addEvent("load", function() {
var test = new MainClass();
test.rewriteVar()
})
})()
:あなたはVARキーワードを使用する場合は、関数定義内で宣言
変数は、その関数に対してローカルです。プリミティブ値はすべて不変です。 –