typeof new String («aaa») === «объект»? Все является объектами, но есть примитивные типы?

Будет много вопросов, требующих уточнения, поэтому я постараюсь пометить их цифрами, чтобы было легче ответить на них.

В последнее время я много изучаю javascript. Есть тема про «все есть объект».

  1. В моей «интерпретации javascript» это означает, что у всего есть «объект» в начале цепочки прототипов. Это правильно?

  2. Но как насчет примитивных типов ( string , number , boolean , null , undefined )? Они объекты? Например, я могу назвать "aaa" .length .Как это работает?

  3. Функции - это объекты, реализующие [[Call]] в соответствии с этим . Что это обозначает? (Я думаю, это что-то о fun.call ( this , arg1 ), но помогите мне понять это.

    Также есть оператор typeof . Я связал его раньше из MDN , но есть вещи, которые сбивают с толку.

  4. typeof "aaa" === "string" и typeof String ("aaa") = == "string" . Это кажется вполне ожидаемым, но что возвращает String ("aaa")? Думаю, он каким-то образом анализирует ввод и возвращает из него строковый примитив. Это правильно?

  5. typeof new String ("aaa") === "object" Что? Пожалуйста, объясните мне его цепочку прототипов. Где и на каком прототипе у меня есть примитивное строковое значение "aaa"? Чем оно отличается от typeof String ("aaa") ?

Я читал и смотрел много вещей по этой теме и думаю, что мне нужно это разъяснить.

Также в ваших ответах, если вы ссылаетесь на внешний ресурс, пожалуйста резюмируйте его важную часть и укажите, что это значит, потому что я Я читал спецификации ecmascript, и они довольно длинные :).

Также, если есть разница в версиях javascript, укажите это тоже.

9
задан Lightness Races with Monica 2 February 2012 в 10:03
поделиться