JavaScript を呼び出すときに定義される仮パラメータに加えて、各関数は 2 つの追加パラメータ (this と argument) を受け入れます。これはオブジェクト指向プログラミングでは非常に重要であり、呼び出しモードによって異なります。
JavaScript には、メソッド呼び出しモード、関数呼び出しモード、コンストラクター呼び出しモード、適用呼び出しモードの 4 つの呼び出しモードがあります。これらのモードは、初期化キー パラメータが異なります。
メソッド呼び出しパターン: 関数がオブジェクトのプロパティとして保存されると、それをメソッドと呼びます。メソッドが呼び出されるとき、これはオブジェクトにバインドされます。呼び出し式に属性式 (つまり、.dot 式または [script] 添字式) が含まれている場合、それはメソッド呼び出しとして扱われます。
var myObject = {
value: 0;
インクリメント: function(inc){
this.value = typeof inc === 'number' ? inc : 1;
myObject.increment ();
document.writeln(myObject.value);//1
myObject.increment(2);
document.writeln(myObject.value);//2
メソッドはこれを使用してオブジェクトにアクセスできるため、オブジェクトから値を取得したり、オブジェクトを変更したりできます。 this のバインディングは呼び出し時に発生します。この超遅延バインディングにより、関数の再利用性が高くなります。これにより、それらが属するコンテキスト メソッドを取得できます。これはパブリック メソッドと呼ばれます。
関数呼び出しモード: 関数がオブジェクトの属性ではない場合、関数として呼び出されます var sum = add(3, 4);//合計値が 7
関数の場合このパターンが呼び出されるとき、これはグローバル オブジェクトにバインドされます。
コンストラクター呼び出しモード: JavaScript はプロトタイプ継承に基づいた言語です。これは、プロパティを他のオブジェクトから直接継承できることを意味します。言語にはクラスがありません。
先頭に new を付けて関数を呼び出すと、関数に接続されているプロトタイプ メンバーを非表示にする新しいオブジェクトが作成され、これがその新しいオブジェクトにバインドされます。
呼び出しモードの適用: JavaScript は関数型オブジェクト指向プログラミング言語であるため、関数にはメソッドを含めることができます。
apply メソッドを使用すると、パラメーター配列を構築し、それを使用して関数を呼び出すことができます。また、この値を選択することもできます。
apply メソッドは 2 つのパラメーターを受け入れます。最初のパラメーターは this の値にバインドされ、2 番目のパラメーターはパラメーター配列です。