今回はjsでapplyとcallを使う場合の注意点について詳しく解説します。
例を直接見ることも、最初に紹介を読むこともできます:
call と apply は、 これを動的に変更するように見えます オブジェクトに特定のメソッドがないが、他のオブジェクトにはある場合、call または apply を使用して、他の オブジェクトのメソッドを操作できます 。
call と apply は、JavaScript エンジンによって内部的に実装される Function.prototype のメソッドです。これらは Function.prototype に属しているため、各 Function オブジェクトのインスタンス、つまり、各メソッドには call、apply の属性があります。これらはメソッドの属性であるため、もちろんその使用法はメソッドに固有です。これら 2 つのメソッドは同じ機能を持つため混同されやすいですが、単に異なる方法で使用されるだけです。上記のことから、次のように結論付けることができます。 apply
メソッドを呼び出す this ポインタを 変更するためにメソッドに使用されます
簡単な例:
電話
りー B関数にはメソッドがなく、A関数にはgetName()メソッドが当然存在しますが、BもgetName()メソッドを使用する必要がある場合はどうすればよいでしょうか。 次に、 call(this,'parameter') を使用します。 !
この文を再度理解すると、call または apply を使用して他のオブジェクトのメソッドを呼び出して操作することができ、これを動的に変更することができます。 、元々は a.getName() これは a を指していましたが、呼び出しによって動的に this が b に指され、 b.getName() になりました
応募する
apply と call はパラメータの使い方が違うだけです
function A() { this.getName = function (xx) { return xx; } } function B() { } var a = new A(); console.log( a.getName('i am A') ); //i am A var b = new B() ; console.log( a.getName.call(b,'i am B') ); // i am B
callとapplyの一般的な使い方
最も一般的に使用されるものは、
document.getElementsByTagName を通じて選択された dom ノードが配列のような配列であることです。プッシュ、ポップ、その他のメソッドを配列の下に適用することはできません。通過できます: function A() {
this.sun = function (a ,b) {
return a+b;
}
}
function B() {
}
var a = new A();
console.log( a.sun(1,2) ); //3
var b = new B() ;
console.log( a.sun.call(b,2,2) ); // 4
console.log( a.sun.apply(b,[3, 3]) ); //6
この記事の事例を読んだ後は、この方法を習得したと思います。さらに興味深い情報については、php 中国語 Web サイトの他の関連記事に注目してください。
推奨読書:
Angular 4 での CSS スタイルの表示 vue コンポーネントが数値推測関数を実装する方法以上がjsでのapplyとcallの使い方を詳しく解説(コード付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。