1 \ В моей «интерпретации javascript» это означает, что у всего есть «объект» в начале цепочки прототипов.Это правильно?
Да и нет.Все объекты по умолчанию наследуются от Object
.Можно, используя ES5 Object.create
, иметь объект, который не наследуется от Object
, но это все еще объект.
2 \ Но как насчеттипы примитивов (строка, число, логическое значение, ноль, неопределенный)?Это объекты?Я могу назвать «ааа». Длина например.Как это работает?
Это заблуждение, что в JavaScript все является объектом.Примитивы не являются объектами, но они могут быть преобразованы в объекты.Когда используется оператор .
, левый операнд преобразуется в объект (, если возможно ).
3 \ Функции - это объекты, реализующие [[Call]] в соответствии сэтот.Что это значит?(Я думаю, что это что-то вроде fun.call (this, arg1), но помогите мне понять это.
[[Call]]
- это внутренний метод, используемый реализацией ECMAScript для маркировки объектов как функций.Он не имеет прямого отношения к Function.prototype.call
, который также является функцией, помеченной [[Call]]
. См. 13.2.1 [[Call]] .
4 \ typeof "aaa" === "string" и typeof String ("aaa") === "string". Это кажется вполне ожидаемым, но что возвращает String ("aaa")? Я предполагаю, что он анализируеткаким-то образом вводит и возвращает строковый примитив. Это правильно?
String()
, когда не используется в качестве конструктора, преобразует свой аргумент в строковый примитив . Итак String("aaa")
- это то же самое, что и "aaa".toString()
. В этом случае это избыточно и не нужно.
5 \ typeof new String ("aaa") === "object" Что? Пожалуйста, объясните, что это цепочка прототипов.мне. Где и на каком прототипе у меня есть примитивное строковое значение "aaa"? Чем оно отличается от typeof Stri?ng ("aaa")?
String()
, используемый в качестве конструктора, возвращает объект, который наследуется от String()
, как и следовало ожидать.Существует разница между строковым примитивом и строковым объектом .
Практически на все ваши вопросы можно ответить, прочитав спецификацию, когда вы что-то путаете.Для вашего удобства есть аннотированная версия спецификации , доступная онлайн .