ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScript 呼び出し関数の使用手順_JavaScript スキル

JavaScript 呼び出し関数の使用手順_JavaScript スキル

WBOY
リリース: 2016-05-16 18:30:00
オリジナル
1136 人が閲覧しました

call Method

を参照。適用対象: 関数オブジェクト

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

コードをコピーします コードは次のとおりです:

関数add(a ,b)
{
alert(a b);
関数 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(); Class2();
c1.showNam.call(c2);


call は、c1 のメソッドを c2 に実行することを意味することに注意してください。次に、c1 のメソッドを配置します。 showNam() メソッドは実行のために c2 に配置されるため、this.name は class2 になるはずです。実行結果は次のようになります。面白いと思うなら、a オブジェクトに b オブジェクトを実行させることができます。このメソッドは、Java プログラマが思いつかないものです。さらに興味深いのは、呼び出しを使用して継承を実装できることです。



コードをコピーします

コードは次のとおりです。 関数 Class1() { this.showTxt = function(txt) {
alert(txt);
}
}
関数 Class2()
{
Class1.call(this);
var c2 = new Class2()


このように、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 番目のパラメータは任意の型にすることができ、apply の 2 番目のパラメータは配列であるか、引数
と呼び出し先、呼び出し元にすることができます。これは call の使用法とは異なります。次回です、笑。
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート