js呼び出しの使用法

hzc
リリース: 2020-07-03 11:00:38
転載
2372 人が閲覧しました

call メソッド
オブジェクトのメソッドを呼び出して、現在のオブジェクトを別のオブジェクトに置き換えます。
call([thisObj[,arg1[, arg2[, [,.argN]]]]])
パラメータ
thisObj
オプション。現在のオブジェクトとして使用されるオブジェクト。
arg1、arg2、、argN
オプション。一連のメソッドパラメータが渡されます。
説明
call メソッドを使用すると、別のオブジェクトの代わりにメソッドを呼び出すことができます。 call メソッドは、関数のオブジェクト コンテキストを初期コンテキストから thisObj で指定された新しいオブジェクトに変更します。
thisObj パラメーターが指定されていない場合は、グローバル オブジェクトが thisObj として使用されます。
一見すると混乱しやすいので、簡単に説明します。
obj1.method1.call(obj2,argument1,argument2)
上記のように、call の機能はメソッドを配置することです。 obj1 のそれを obj2 で使用し、次の argument1.. がパラメータとして渡されます。
具体的な例を挙げてください

function 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 に置くことを意味することに注意してください。元々、c2 には showNam() メソッドがありませんでした。 c1 の showNam() メソッド。このメソッドは実行のために c2 に配置されるため、this.name は class2 である必要があり、実行結果は次のようになります:alert ("class2");
どう思いますか、興味深いですね。オブジェクト a にオブジェクト b のメソッドを実行させることができますが、これは Java プログラマが思いつかないことです。さらに興味深いのは、call を使用して継承
#

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); 
 }
ログイン後にコピー
非常に簡単です。2 つの呼び出しを使用して多重継承を実現します

もちろん、プロトタイプ チェーンの使用など、JS 継承の他の方法もありますが、これはここでは扱いません。この 2 つのメソッドは基本的に同じことを意味します。
違いは、call の 2 番目のパラメータは任意の型にできるのに対し、call の 2 番目のパラメータは任意の型にできることです。 apply の 2 番目のパラメータは Array である必要があります


推奨チュートリアル: "

JS チュートリアル

"

以上がjs呼び出しの使用法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:cnblogs.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート