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