Существует чрезвычайно простой алгоритм, который отлично работает в двух случаях, в зависимости от наличия "use strict"
.Почему строгий режим делает такие простые действия такими разными?
Случай 1:
Если func()
декларация находится в строгом режиме, чем консольные журналы примитивного
"use strict";
// strict mode is on
Object.prototype.func = function() { return this; } // do nothing with the object
console.log((4).func()); // 4; primitive
Case 2:
Если func()
декларации находится вне строгий режим, чем консольные журналы объектов одного и того же значения
// strict mode is off
Object.prototype.func = function() { return this; } // do nothing with the object
"use strict";
console.log((4).func()); // Number {[[PrimitiveValue]]: 4}; object
Что является источником такой разницы? В чем причина такого обращения?
Как такие простые действия могут быть разными в разных состояниях строгого режима?
Это в спецификациях * "значение, переданное как' this' функции в строгом режиме, не принудительно превращается в объект (a.k.a. "boxed") "* – adeneo