前のビデオに戻って、この明示的な結合というキーワードの価値を決定する第3のルールについて説明しました。
呼び出し適用とバインドを使用すると、キーワードのコンテキストが変更されることがわかりました。
これは、最初のコードブロックが前に見たものと同じであるという呼び出しを使用して、以前の問題を解決する方法を見ていきましょう。
しかし、2番目のセクションで何が起きているのか見てみましょう。
以前は、私たちは人の犬の犬に、こんにちはを返すと言っていました。
これは、hello関数の中にあるキーワードの値が、firstプロパティを持たないdogオブジェクトを参照するためです。
コールを使用しているので、今度はキーワードの値を変更することができます。
だからそれを人物オブジェクトに変更しましょう。
これで、Helloが呼び出され、問題が解決されたことがわかります。
また、dogオブジェクト内でコンテキストの決定関数を使用して、キーワードthisの値を変更して、関数がtrueを返すようにすることもできます。
注意すべき重要な点の1つは、私たちがsay helloを呼び出すのではなく、単に呼び出すコンテキストメソッドを決定することではないということです。
したがって、こんにちはと言うと括弧はなく、コンテキストを決定します。
呼び出しを使用するときは、以下の例のようにコードの適用を避けるためにcallが使用されます。
ここでは、2つのオブジェクトcoldとLがあります。 E. どちらも名字のプロパティを持ち、Hiメソッドと呼ばれます。
このコードは完全にうまく動作しますが、eleteオブジェクト内のかなりの部分を繰り返しています。オブジェクトの内側のメソッドは、コールドオブジェクトの内部の同じメソッドと同じです。
どのようにして私たちのコードをリファクタリングし、オブジェクトの内部の高いメソッドを取り除くことができますか？
私たちが本当にやりたいことは、カルトオブジェクトから同じ高いメソッドを使用することです。
しかし、寒さを指すキーワードの代わりに明示的にそれをL-Eオブジェクトに設定したいと考えています。
今すぐビデオを一時停止し、通話を使用して問題を解決する方法を理解できるかどうかを確認してください。
ソリューションを見てみましょう。
オブジェクトからsay hiメソッドを削除し、これをキーワードにL-Eという値を設定するためにcallを使用しています。
say
hiメソッドが呼び出されているとき、呼び出しメソッドの最初のパラメータは、これを参照するキーワードになります。
このARGと呼んでいます。
もう一度このようなものはかなりトリッキーです。
したがって、以前のスライドをちょっと混乱させて見て、次のビデオで起こっていることを正確に見るために、これらの例をクロームコンソールに入力してください。
適用を見て、applyを使ってキーワードのコンテキストを設定する方法と、applyと呼ぶ関数に引数を渡す方法を見ていきます。
もう一方の