関数呼び出しメソッド
3人の兄弟について話す前に、javascriptに電話して、電話をかけて、関数の呼び出し方法についてお話したいと思います。
•関数として
•メソッドとして
•コンストラクターとして
•Call()およびApply()メソッドを介して間接的に呼び出します
私たちは皆、以前の3つの呼び出し方法を知っており、この記事の範囲内ではないので、それらについては話しません。
4番目のコールメソッドについて話しましょう
call()およびapply()を介して間接呼び出し
実際、これら2つの関数を特定のオブジェクトのメソッドと見なすことができ、メソッドを呼び出すことにより、間接的に関数を呼び出すことができます。
関数f(){} f.call(o); f.apply(o);call()およびapply()の最初のパラメーターは、関数を呼び出す親オブジェクトです。これは呼び出しのコンテキストであり、関数本体内のこれを通じてそれへの参照が得られます。
それで、それらは同じですか、それとも違いはありますか、またバインド方法もありますか?心配しないでください。以下の3つの間の違いと接続を詳細に分析しましょう。
電話()
call()メソッドは、特定のこのポインター(馬鹿、その正確性について気にしないでください)とそれを呼び出す方法のパラメーターを指定します。たとえば、次のような関数があります。
var fn = function(arg1、arg2){console.log(this、arg1、arg2); }私はそれを呼びます:
fn.call(null、 'skylor'、 'min'); //1fn.call(undefined、 'skylor'、 'min'); // 2var fx = function(){} fn.call(fx、 'skylor'、 'min'); // 3これら3つの呼び出しメソッドの返品値は何ですか?ナンセンスはありません、参照してください:
1。null "skylor" "min"2。未定義の「Skylor "" min "3。fx" skylor "" min "
これは本当にそうですか?あなたは賢い、ブラウザコンソールに行って試してみてください。私は行きます、あなたは詐欺師です、それはこのようではありません:
Chrome1。ウィンドウ「Skylor "" min "2。Window" Skylor "" min "3。fx" Skylor "" min "
わかりました、あなたは賢いです。しかし、これはすでに呼び出し方法を非常によく示しています。 (ウィンドウは非常に高度です、マイクロソフトは笑っています...)
コールメソッド、最初のパラメーターはこのポインターを指定することであり、その後の各パラメーターが必要なパラメーターを指定することであることに気付きました。 「各」を使用していることに注意してください。つまり、いくつかのパラメーターが必要で、関数を呼び出して、各パラメーターを1つずつ書き込みます。
適用する()
apply()はcall()の兄弟です。他の場所は同じように見え、それらはすべて男性ですが、1つの場所で異なります。最初に例を見てみましょう。
fn.Apply(null、['skylor'、 'min']); //1fn.apply(fx、['skylor'、 'min']); // 2
兄弟、あなたはそれを間違って書いたことがありますか?より多くのブラケットがあります。いや、いや、いや、これが通話とは違うように見える理由です。その2番目のパラメーターは、必要なパラメーター配列です。
バインド()
Bind()、彼らは3人の兄弟ではありません、私はこれを理解しています、Blabla…いいえ、いや、それは本当の兄弟ではなく、応募と電話で宣誓兄弟になった宣誓兄弟です。
もちろん、BINDメソッドではこのポインターを指定することもできますが、関数を呼び出す代わりに、それを呼び出す(またはコピー)関数を返し、この関数に特定のこのポインターとパラメーターを指定します。慣習、例はすべてを示しています:
var fnbound = fn.bind(null、 'skylor'、 'min');
この時点で、fnboundは関数であり、これがnullを指している別の関数とパラメーターは['skylor'、 'min']です。呼びかけ:
fnbound();
結果:
null、 'skylor'、 'min'
私と一緒に窓を心配しないでください。 。 。 。 。
Bindと他の2人の兄弟の違いは、関数を呼び出すのではなく、新しい関数を返すことです。同様に、このポインターとパラメーターも指定します。パラメーターを指定する方法はコールと同じであり、1つずつ来ます。
最後の例を見てみましょう:
var ShoppingCart =(function(){var _calculateprice = function(){return this.price * this.amount;}; return {calculateprice:_calculateprice}})これは終わります。 !
上記は、編集者が紹介したJavaScriptのApply、Call、Bindのコンテンツ全体です。それがあなたに役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!