JavaScript学習メモ(9)メソッドの呼び出しと適用_基礎知識

WBOY
リリース: 2016-05-16 18:36:45
オリジナル
718 人が閲覧しました
call メソッドと apply メソッド
call メソッドは、このポインターのコンテキストを変更できます。同様のメソッドには apply が含まれます。これは主に、現在の this インスタンス ポインターの一貫性を維持するために、JS オブジェクトのさまざまなメソッドが相互に呼び出すときに使用されます。または、特殊な場合には、 this ポインタを変更する必要があります。
obj1.method1.call(obj2,argument1,argument2)
上記のように、call の機能は obj1 のメソッドを obj2 に置いて使用できるようにすることであり、次の argument1...これらはパラメータとして渡されます。 。
具体的な例を示します
コードをコピーします コードは次のとおりです:

関数add(a , b) {
alert(a b);
}
function sub(a, b) {
alert(a - b);
add.call (sub, 3, 1);

この例の意味は、sub を add, add.call(sub,3,1) == add(3,1) に置き換えることです。結果は次のようになります:alert(4); // 注: js の関数は実際にはオブジェクトであり、関数名は Function オブジェクトへの参照です。
もう少し複雑な例を見てください

コードをコピーします コードは次のとおりです:
function Class1 () {
this.name = "class1";

this.showNam = function() {
alert(this.name)
}

function Class2() {
this.name = "class2";
}

var c1 = new Class1()
var c2 = new Class2(); ;

c1.showNam.call(c2);


call は、c1 のメソッドを c2 に実行することを意味することに注意してください。次に、c1 のメソッドを配置します。 showNam() メソッドは実行のために c2 に配置されるため、this.name は class2 になり、実行結果は次のようになります。呼び出しを使用して継承を実装できます



コードをコピー コードは次のとおりです: function Class1 () {
this.showTxt = function(txt) {
alert (txt);
}
}

function Class2() {
Class1.call(this) );
}

var c2 = new Class2() ;

c2.showTxt("cc"); このようにして、Class2 はClass1.Class1.call(this) は、このオブジェクトの代わりに Class1 オブジェクトを使用することを意味し、Class2 には Class1 のすべてのプロパティとメソッドが含まれていますか? c2 オブジェクトは Class1 のメソッドとプロパティを直接呼び出すことができます。 :alert("cc");
これは、JavaScript がオブジェクト指向の継承をシミュレートする方法であり、多重継承も実現できます。



コードをコピー

コードは次のとおりです。 function Class10() { this .showSub = function(a, b) { alert(a - b); }
}

function Class11() {
this.showAdd = function(a, b) {
alert(a b);
}
}

function Class2() {
Class10.call(this);
Class11.call(this);
}



1.call メソッド

オブジェクトのメソッドを呼び出して、現在のオブジェクトを別のオブジェクトに置き換えます。
call([thisObj[,arg1[, arg2[, [,.argN]]]]])
パラメータ
thisObj はオプションです。現在のオブジェクトとして使用されるオブジェクト。 arg1、arg2、、、argN はオプションです。一連のメソッドパラメータが渡されます。
2.apply メソッド

特定のオブジェクトのメソッドを適用し、現在のオブジェクトを別のオブジェクトに置き換えます。
apply([thisObj[,argArray]])
パラメータ
thisObj オプション。現在のオブジェクトとして使用されるオブジェクト。 argArray オプション。この関数に渡される引数の配列。

2 つの違い
:
この 2 つによって実装される関数はまったく同じですが、Call では各パラメーターをカンマ (,) で区切って渡すパラメーターの受け渡し方法が異なります。そして apply はすべてのパラメータを配列に渡すことです。
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート