Будет много вопросов, требующих уточнения, поэтому я постараюсь пометить их цифрами, чтобы было легче ответить на них.
В последнее время я много изучаю javascript. Есть тема про «все есть объект».
В моей «интерпретации javascript» это означает, что у всего есть «объект» в начале цепочки прототипов. Это правильно?
Но как насчет примитивных типов ( string
, number
, boolean
, null
, undefined
)? Они объекты? Например, я могу назвать "aaa" .length
.Как это работает?
Функции - это объекты, реализующие [[Call]] в соответствии с этим . Что это обозначает? (Я думаю, это что-то о fun.call ( this , arg1 ), но помогите мне понять это.
Также есть оператор typeof
. Я связал его раньше из MDN , но есть вещи, которые сбивают с толку.
typeof "aaa" === "string"
и typeof String ("aaa") = == "string"
. Это кажется вполне ожидаемым, но что возвращает String ("aaa")? Думаю, он каким-то образом анализирует ввод и возвращает из него строковый примитив. Это правильно?
typeof new String ("aaa") === "object"
Что? Пожалуйста, объясните мне его цепочку прототипов. Где и на каком прототипе у меня есть примитивное строковое значение "aaa"? Чем оно отличается от typeof String ("aaa")
?
Я читал и смотрел много вещей по этой теме и думаю, что мне нужно это разъяснить.
Также в ваших ответах, если вы ссылаетесь на внешний ресурс, пожалуйста резюмируйте его важную часть и укажите, что это значит, потому что я Я читал спецификации ecmascript, и они довольно длинные :).
Также, если есть разница в версиях javascript, укажите это тоже.