Помогите пожалуйста понять что детально происходит при таком вызове:
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());
Комментариев нет:
Отправить комментарий