ホームページ >ウェブフロントエンド >jsチュートリアル >javascript_javascript スキルの呼び出しメソッドと適用メソッドに関する簡単な説明

javascript_javascript スキルの呼び出しメソッドと適用メソッドに関する簡単な説明

WBOY
WBOYオリジナル
2016-05-16 17:21:191148ブラウズ

call と apply の最初の実パラメータは、呼び出される関数の親オブジェクトであり、それへの参照は関数本体の this を通じて取得されます。
たとえば、関数 f をオブジェクト o のメソッドとして呼び出したい場合は、次のように call メソッドと apply メソッドを使用できます。

コードをコピー コードは次のとおりです:

f.call(o);
f.apply(o);

は次のとおりです。次のように理解されます:
コードをコピー コードは次のとおりです。

o.m = f; / Store f as o 一時メソッド
o.m(); // この一時メソッドを呼び出します
delete o.m; // この一時メソッドを削除します

例を示します。
コードをコピー コードは次のとおりです:

function testFun(){
return this.a this.b;
}
var o = {a:1, b:2};
testFun.call(o); //3
testFun.apply(o); //3

上記コードの実行結果はいずれも 3 であり、return o.a o.b と理解できます。
呼び出しメソッドと適用メソッドの最初の実パラメータが null または未定義の場合はどうなるのかという質問を考えてみましょう。次の例を見てみましょう:
コードをコピーします コードは次のとおりです:

var a = 10, b = 20;
function testFun(){
return this.a this.b;
}
testFun.call();
testFun.apply();

上記のコードの実行結果はすべて 30 です。これは、call および apply の最初の実パラメータが null または未定義として渡された場合、グローバル オブジェクトに置き換えられるためです。
call と apply の 2 つのメソッドの違いは何ですか?
call メソッドの場合、最初の呼び出しコンテキスト パラメーター以降の実パラメーターはすべて、呼び出される関数に渡される値です。たとえば、関数 f をオブジェクト o のメソッドとして呼び出し、2 つのパラメーターを渡すには、次のコードを使用できます。
コードをコピー コードは次のとおりです:

f.call(o, 1, 2);

apply メソッドは、最初の実パラメータの後のすべての実パラメータを適用します。それを配列に入れます。
コードをコピー コードは次のとおりです。

f.apply (o, [1, 2]);

例を挙げてみましょう
コードをコピーしますコードは次のとおりです。

function testFun(x, y){
return this.a this.b x y;
}
var o = {a:1, b: 2};
testFun.call(o, 10, 20);
testFun.apply(o, [10, 20]);

上記のコードの実行結果は次のようになります。 33、これは return o.a o.b 10 20 として理解できます。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。