Mozillaの公式Webサイトでcall()の紹介は次のとおりです。
コードコピーは次のとおりです。
call()メソッドは、指定されたこの値といくつかの指定されたパラメーター値を使用して関数またはメソッドを呼び出します。
call()syntax
コードコピーは次のとおりです。
fun.call(thisarg [、arg1 [、arg2 [、...]]]))
call()パラメーター
thisarg
コードコピーは次のとおりです。
この値は、楽しい関数が実行されているときに指定されています。指定されたこの値は、関数が実行されたときに必ずしもこの値を意味するものではないことに注意する必要があります。この関数が非厳密なモードである場合、この値はnullおよび未定義として指定され、グローバルオブジェクト(ブラウザ内のウィンドウオブジェクト)を自動的に指し、元の値(number、string、boolean value)のこの値は、元の値の自動ラッピングオブジェクトを指します。
arg1、arg2、...
コードコピーは次のとおりです。
指定されたパラメーターリスト。
JavaScriptの呼び出し()メソッド
上記の複雑な説明に注意を払わないようにしましょう。このプロセスを段階的に開始してください。
call()メソッドの例
だから私は別のこんにちは、世界を書きました:
コードコピーは次のとおりです。
関数印刷(P1、P2){
console.log(p1 + '' + p2);
}
print( "hello"、 "world");
print.call(未定義、 "hello"、 "world");
ただし、2つのメソッドには同じ出力がありますが、対照的に、呼び出しメソッドも未定義に渡されます。
次に、別の例を見てみましょう。
コードコピーは次のとおりです。
var obj = function(){};
関数印刷(P1、P2){
console.log(p1 + '' + p2);
}
print.call(obj、 "hello"、 "world");
しかし、ここでは、前の例で未定義はパラメーターを渡す必要があるためであるため、まだ定義されていません。ここでの通話の使用についての本当の反映はありません。より良い例を参照してください。
コードコピーは次のとおりです。
function print(name){
console.log(this.p1 + '' + this.p2);
}
var h = {p1: "hello"、p2: "world"、print:print};
h.print( "fd");
var h2 = {p1: "hello"、p2: "world"};
print.call(h2、 "Nothing");
コールは、自分のものを呼ぶのと同じように、他の人の方法やオブジェクトを借りることによって呼び出されます。 h.printでは、関数がメソッドと呼ばれる場合、これは関連するオブジェクトを指します。しかし、この例では、H2と呼ばれるH2と呼ばれるH2と呼ばれるかどうかはわかりませんでした。それで、私はモジラの例を引用しました
コードコピーは次のとおりです。
関数製品(名前、価格){
this.name = name;
this.price = price;
if(価格<0)
Throw raigherror(「製品を作成できません "' + name +'"ネガティブ価格 ');
これを返します。
}
機能フード(名前、価格){
Product.Call(この名前、価格);
this.category = 'Food';
}
food.prototype = new product();
var Cheese = new Food( 'feta'、5);
console.log(チーズ);
ここでは、どのオブジェクトがどの方法を呼び出すかを本当に理解できます。この例では、Food Constructorを使用して作成されたオブジェクトインスタンスには、製品コンストラクターに名前と価格の属性が追加されますが、カテゴリ属性はそれぞれのコンストラクターで定義されます。
コードコピーは次のとおりです。
function print(name){
console.log(this.p1 + '' + this.p2);
}
var H2 = function(no){
this.p1 = "hello";
this.p2 = "world";
print.call(this、 "Nothing");
};
h2();
ここでは、H2は関数印刷を呼び出すレシーバーとして使用されます。食品の例のように、子コンストラクターでは、親コンストラクターのコールメソッドを呼び出すことで継承を実装できます。
コールメソッドの利点については、「Execument JavaScript」で導入されています。
1.コールメソッドを使用して、受信機をカスタマイズして関数を呼び出します。
2。呼び出しメソッドを使用して、指定されたオブジェクトに存在しないメソッドを呼び出します。
3。コールメソッドを使用して、ユーザーがコールバック関数の受信者を指定できる高次関数を定義します。