ここでは、キーワードthisが宣言されたオブジェクトの外側にあるときに、最初のルールがどのように機能するかを知ったので、これがキーワードの宣言されたオブジェクトの内部にあるときどうなるかを見てみましょう。
暗黙的またはオブジェクトルールと呼ばれる第2のルールでは、キーワードが宣言されたオブジェクトの内部にあるとき、キーワードthisの値は常に多くの単語であった最も近い親オブジェクトになります。
スライド上のコードを見て、その意味を見てみましょう。
ここにPersonオブジェクトがありますが、そのキーはファーストネームです。
hiと言って文脈を決めてください。
この関数の中のsay hiメソッドから始めて、文字列の値を返しています。
こんにちは、キーワードのファーストネームプロパティの値に連結されています。
これは、キーワードthisが宣言されたオブジェクトの内部にあることを認識しているので、最も近い親オブジェクトを見てキーワードの値を調べます。
これは、最も近い親オブジェクトがキーワードの値を意味するperson変数であることがわかります。
これは人物オブジェクトです。
ここで、コンテキスト決定メソッドを調べてみましょう。
この関数は、trueまたはfalseを返す必要があります。
我々は常にブール値に評価されるトリプルイコールを使用していることに注意してください。
この関数は何を返すと思いますか？
あなたがキーワードを見る場所を考えてみましょう。
これは、宣言されたオブジェクトの内部または外部です。
キーワードthisはpersonオブジェクトの内部にあり、それはpersonオブジェクトと等しいことを意味します。
したがって、この式は、移動する前に真と評価する必要があります。
もう一度このコードを確認して、クロームコンソールまたはテキストエディタに入れて、何が起こっているかを正確に確認してください。
今度は、暗黙のルールでは、キーワードthisの値が常に最も近い親オブジェクトになると言っています。
しかし、ネストされたオブジェクトで少しばかげてしまうものを見てみましょう。
このコードを見てみましょう。
ここではperson変数があることがわかりますが、今回はfirst nameプロパティが呼び出されます。
もう一度hiメソッドがあり、コンテキストメソッドを決定します。
秒を取って、呼び出されたときにそれらの関数が返すものについて考えてみましょう。
ここで、dogという人物オブジェクトに追加のキーがあることに注目してください。
ロバの価値は実際に別のオブジェクトです。
では、dogオブジェクトの内部の入れ子になったオブジェクトを調べてみましょう。
私たちはhelloのキーを持っています。これはHelloという文字列をキーワードと結合して返す関数です。
これは、キーワードの値を決定するための2つのルールを使用して、ビデオを一時停止し、hello関数の中でキーワードの値が何であるか把握しようとします。
だからあなたは思いつきますか？
これは、人が犬のオブジェクトを参照するキーワードです。
あるいは、グローバルオブジェクトかもしれません。
さて、キーワードthisが宣言されたオブジェクトの内部になければ、グローバルオブジェクトになるという最初のルールに戻りましょう。
この場合、キーワードthisがPersonという宣言されたオブジェクトの内部にあることがわかります。
そこで、第2のルールに移ります。
第2の規則は、キーワードthisの値が常に最も近い親オブジェクトであることを述べている。
これは、宣言されたオブジェクトが人であっても、ややこしいことです。
say helloメソッドに最も近い親オブジェクトであるDogというオブジェクトがあります。
これで、helloメソッドの中のthisキーワードがdogオブジェクトを参照していることが分かりました。このオブジェクトの値は何ですか？
say helloメソッドの内部のファーストネーム。
犬オブジェクトにはファーストネームのキーがないので、値は未定義です。
だから、私たちは人の犬を入力してhelloメソッドを呼び出すのはなぜですか？
こんにちは、それが返ってくるのを見ることができます。
こんにちは未定義。
また、決定コンテキスト関数内のthisキーワードがpersonオブジェクトを参照していないため、dogオブジェクトの内部で決定されたコンテキスト関数がfalseを返すこともわかります。
それでは、どうやってこれを修正するか、私たちのSay helloメソッドを返すようにしたいのですか？
こんにちは寒いの代わりに未定義のあなたは明示的にキーワードの値を変更するいくつかの方法が必要となり、それは正確に呼び出しが適用され、バインド関数は私たちのために次のビデオで行うことができます。
コールの適用とバインドを使用して、キーワードの値を決定するための3番目のルールが表示されます。
物事は刺激的になっています。
次のビデオで会いましょう。