この最後のビデオでは、キーワードの値を決定するための2番目のルールを調べます。暗黙のルール暗黙のルールでは、キーワードが宣言されたオブジェクトの内部にあるとき、その値は常に最も近い親オブジェクトになります。
私たちが使用しているこれらのルールに注意することの1つは、JavaScript仕様の公式な部分ではないため、そこでは見つからないでしょう。
これらのルールは、キーワードの価値がどのようなものかを把握するのに役立ちます。
最後のビデオの終わりに、私たちは、Say helloメソッドで、このキーワードのコンテキストが予期せず変更されたときの例を見ました。
ファーストネームのプロパティは未定義になりました。これは、現在、このキーワードがdogオブジェクトを参照していたためです。
だから、明示的にthisキーワードの値を設定したいので、dogオブジェクトではなくpersonオブジェクトにすることができます。
これが第3のルールが入る場所です。
呼び出し適用またはバインド・メソッドが表示されているときは、キーワードを適用およびバインドを呼び出す最初のパラメータとして設定するため、キーワードの値を簡単に判別できます。
これらの3つの方法を比較して比較する前に、
覚えておかなければならないことの1つは、文字列ブール値やオブジェクトのような他のデータ型ではなく、関数によってのみ使用できる関数applyとbindまたはメソッドでのみ使用できることです。
私たちが話し合う最初の方法は、callメソッドの最初の引数を、キーワードthisの値が何であれ欲しいものにすることです。
これは通常このARGと呼ばれ、必要なものに設定できます。
このARGの後の引数は、関数の中に渡したいパラメータです。これは、キーワードのコンテキストを混乱させる音の内部で変更していますが、例を見てもわかります。
また、関数は無限の引数を持つことができるので、呼び出しを使用するときは、それぞれの引数をカンマで区切ります。
最後に、関数が直ちに呼び出される関数に対して呼び出しメソッドが使用されるとき。
さあ、プロットに移りましょう。
適用は、呼び出しとほとんど同じですが、適用は、呼び出すのと同じように、最初に2つのパラメータを取るだけです。これは、キーワードとなる値が欲しいものです。
このARGと呼んでいます。
2番目の引数は、キーワードthisの値を変更する関数に渡す引数の配列です。
今度はバインドを調べましょう。
バインドは、関数をすぐに呼び出す代わりに、呼び出しとほとんど同じです。
Bindは関数定義を返します。
関数定義の意味をすばやく解そう。
私は最初の関数と呼ばれる関数を作成し、それは文字列helloを返すつもりです。
私が関数を呼び出すのではなく、私が作成した変数を調べてください。
私は関数定義を返します。
バインドは非常に強力な関数です。これは、キーワードthisの値が異なる関数を見て、後で呼び出すことができるからです。
バインドは、set
timeoutのような非同期コードを扱うときには非常に有用であり、courieringのようなより高度なプログラミング手法のビルディングブロックです。
これらの3つのメソッドを簡単に見てみましょう。コールの適用とバインドは、キーワードの値を明示的に述べるために使用されます。
これは、これが参照するキーワードが完全に制御されるようにするために使用します。
したがって、最初の2つのルールよりも優先されます。callおよびapplyは、呼び出された関数を即座に呼び出す一方、bindの代わりにキーワードの値を使用して新しい関数の定義を返します。
これは明示的に最終的に呼び出しとバインドを設定します。
無限の数のパラメータを除いて、適用するのは次のビデオで2つしか取りません。
呼び出しの例と、これを使用してキーワードの値を明示的に設定する方法を見ていきます。
それを見て