質問: "hello"; console.log(str.length); ``` A) この場合には、文字列だけではオブジェクトではないのでプロトタイプチェーンをたどりStringオブジェクトに 辿り着き、そのプロパティであるlengthを参照しているという理解であっていますでしょうか? また、Javascript(ブラウザ)は"hello"は文字列であるため、当然にそのプロトタイプ(上位のオブジェクト)はStringオブジェクトと 知っているのでしょうか。 B) また、仮にプロトタイプチェーン上、上位のオブジェクトが複数あってlengthプロパティ(または他のメソッドでもよいのですが) が複数存在する場合、近いオブジェクトのプロパティ(またはメソッド)が選択されるという考え方で正しいでしょうか? とても基本的な挙動や考え方かもしれませんが、ご教示の程 宜しくお願い申し上げます。
回答: * Aについて https://developer.mozilla.org/ja/docs/Glossary/String に下記の通り記載があります。 > > JavaScript では、文字列はプリミティブ値の一つで、String オブジェクトが文字列プリミティブのラッパーオブジェクトになります。 > > > 例えば以下のコードでは、プリミティブ型にlangプロパティが存在しないため、undefinedとなります。 ``` var str = "hoge"; str.lang ="en"; console.log(str.lang); var obj = new String("hoge"); obj.lang ="en"; console.log(obj.lang); ```