Вы, вероятно, выполняете свою функцию в "нестрогом" режиме.Согласно документации:
function.call(thisArg, arg1, arg2, ...)
thisArg
Дополнительно.Значение этого предусмотрено для вызова функции.Обратите внимание, что это может не быть фактическим значением, видимым методом: , если метод является функцией в нестрогом режиме, null
и undefined
будут заменены глобальным объектом , а примитивные значения будутбыть преобразованным в объекты.
Со страницы MDN на Function.prototype.call , выделено
Вот пример.Первый блок работает в строгом режиме и регистрирует null
.Второй будет записывать window
, так как это глобальная область видимости вашего браузера.(Пожалуйста, дайте фрагменту стека некоторое время для регистрации объекта окна, это довольно медленно)
(function() {
"use strict";
function logThis() { console.log("strict:", this); }
logThis.call(null);
}());
(function() {
function logThis() { console.log("non-strict:", this); }
logThis.call(null);
}());