Страницы

Поиск по вопросам

среда, 17 апреля 2019 г.

Почему возвращается объект?

Помогите пожалуйста понять что детально происходит при таком вызове:
String.prototype.camelCase=function(){ return [typeof this, this]; } console.log("camel case word".camelCase());
Непонятно в первую очередь почему возвращается тип объект, а не строка.
Я понимаю, что вызов camelCase() происходит в контексте "camel case word". То есть this будет указывать на эту строку. НО именно на строку, а возвращается почему-то, объект.


Ответ

Так как данная функция не в strict моде, this внутри нее является объектом класса String, а не литералом строки. Поэтому тип соответствующий.
Если добавить директиву "use strict", то будет ожидаемый тобой результат
String.prototype.strictCamelCase = function() { "use strict"; return [typeof this, this]; } console.log("camel case word".strictCamelCase());

Комментариев нет:

Отправить комментарий