#javascript
#javascript
Вопрос:
Array.prototype.slice.call
это функция, typeof Array.prototype.slice.call
возвращает "function"
, и я могу вызвать ее, например, Array.prototype.slice.call([1])
.
Я могу сохранить эту функцию в переменной вот так const f = Array.prototype.slice.call
. typeof f
все еще "function"
работает, но если я попытаюсь вызвать его сейчас, я получу ошибку: f([0]) => Uncaught TypeError: f is not a function at <anonymous>:1:1
.
Кто-нибудь знает, почему я больше не могу вызывать f
?
Комментарии:
1. Вы потеряли связь между
.call()
методом и.slice()
method. Внутри.call
,this
будетundefined
, поэтому он не может работать так, как он предназначен для работы.2.
const f = Array.prototype.slice.call.bind(Array.prototype.slice);
устранит эту проблему.3. Похоже, что это сообщение об ошибке в любом случае прослушивается.