を参照するには、私のコードの(非常に)単純化したバージョンです。私は多かれ少なかれ、this
がある関数から別の関数にコンテキストを変更することを理解していますが、私のインクリメント関数(と他の関数)は、クロージャの魔法によって、これが想定されているものを "思い出す"でしょう。JavaScriptのオブジェクトの機能は、ここではそのフィールド
私はこれをすべて削除し、単純に関数を参照してみました。それも失敗しました。
これらの機能はどのように見えるのですか?
を参照するには、私のコードの(非常に)単純化したバージョンです。私は多かれ少なかれ、this
がある関数から別の関数にコンテキストを変更することを理解していますが、私のインクリメント関数(と他の関数)は、クロージャの魔法によって、これが想定されているものを "思い出す"でしょう。JavaScriptのオブジェクトの機能は、ここではそのフィールド
私はこれをすべて削除し、単純に関数を参照してみました。それも失敗しました。
これらの機能はどのように見えるのですか?
JavaScriptでthis
の内容に頼ることはできません。 More on this topic。
OOP言語のようなプライベート属性を導入したいと思うかもしれません。 John Resig described this issue very well。
function Field(val){
var value = val;
this.getValue = function(){
return value;
};
this.setValue = function(val){
value = val;
};
}
var field = new Field("test");
field.value
// => undefined
field.setValue("test2")
field.getValue()
// => "test2"
JavaScriptはJava、C++、PHPなどの従来の言語とは大きく異なります。しかし、あなたはそれに慣れることができます:) this
変更は、あなたがこれを行うことができ事例で
:
function() { obj.display(); }
例:
代替がfooを変更することですvar obj = new Ctor();
function foo(fn) {
fn();
}
foo(function() {
obj.display();
});
()に次のように関数を実行するためのコンテキストを受け入れる:
function foo(fn, context) {
fn.call(context);
}
作業例:http://jsfiddle.net/6aGWg/ – Jeremy
私はゆっくりとしかし確実にそれに慣れています。それが本当に美しい言葉です。 –
私はこのタイプのアプローチから離れる傾向があります。私は自分自身をJavaScriptの純粋主義者と見なしています。JavaScriptはプライベート変数などを作成する能力を持っていますが、パフォーマンスやメモリの使用を犠牲にしています。 – Jeremy