ホームページ >ウェブフロントエンド >jsチュートリアル >jsのcallメソッドを詳しく解説
この記事では主にjsのcallメソッドについて詳しく解説していますので、お役に立てれば幸いです。
メソッド呼び出し
参照
適用対象: 関数オブジェクト
バージョン 5.5 が必要
オブジェクトのメソッドを呼び出し、現在のオブジェクトを別のオブジェクトに置き換えます。
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) ため、実行結果は次のようになります。 // 注: 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);呼び出しは、c1 のメソッドを実行のために c2 に配置することを意味することに注意してください。元々、c2 には showNam() メソッドがありませんでした。現在は、c1 の showNam() メソッドを配置しています。 c2 で実行するため、 this.name は class2 である必要があり、実行結果は次のようになります。これは Java プログラマーが思いつかないことです。さらに興味深いのは、call を使用して継承を実装できることです
function Class1() { this.showTxt = function(txt) { alert(txt); } } function Class2() { Class1.call(this); } var c2 = new Class2(); c2.showTxt("cc");
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); }
関連おすすめ:
以上がjsのcallメソッドを詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。