コードコピーは次のとおりです。
var json = {
Jarray:[]、
jpush:function(c){
this.jarray.push(c);
}
}
var test = ["123"、 "〜"、 "456"];
ES5から与えられたForeachを使用して例をループし、JSONのJarrayに追加します。
コードコピーは次のとおりです。
test.foreach(json.jpush);
この時点でエラーが報告されます。
このエラーの理由は、json.jpushメソッドのこれがJSONオブジェクトではなく、ウィンドウを指すことです。この問題の解決策は、これに適した人を見つけることです。
幸いなことに、foreach()は、オブジェクトを指定するためのパラメーターを提供します。コードを参照してください。
コードコピーは次のとおりです。
test.foreach(json.jpush、json);
アラート(json.jarray); //結果は正常です、123〜456
別の方法があります:
コードコピーは次のとおりです。
test.foreach(function(c){
json.jpush(c);
});
アラート(json.jarray); // 123〜456
Bindを使用してバインドすることもできます
コードコピーは次のとおりです。
test.foreach(json.jpush.bind(json));
アラート(json.jarray);
バインドは、関数を変更する代わりに新しい関数を作成します。新しい関数の動作は元の関数と同じですが、その受信機は私たちが与えるオブジェクトであり、元の関数の受信機は変更されません。
これは、関数またはメソッドが共有されている場合、共有メソッドが変更されないことを心配する必要がないため、BINDメソッドの使用が非常に安全であることを意味します。