Что вызывает проблему является использования функции стрелки.
В стрелок функций, то this
ключевое слово может ссылаться на:
- окна (если доступ по всему миру, а не в строгом режиме),
- неопределенными (если доступ по всему миру, в строгом режиме),
- экземпляр (если в конструкторе),
- объект (если в методе или функции внутри объекта или экземпляра) или
- переплетены/прикладное значение.
Чтобы устранить проблему, вы должны использовать «нормальный» function()
и вы можете вызвать вашу функцию, используя call(this, ...params)
:
- В
this
вы положили объект, который вы хотите ключевое слово this
в быть связанными с и
- В
..args
вы положили параметры вашей функции, если они есть.
Таким образом, с учетом вышеизложенного, ваш код может быть таким, как показано ниже:
Array.prototype.myfunc = function(...) {
// Your code
}
var array = [1, 69, -1, 1];
var result = myfunc.call(array, ...);
- Использование
array
в качестве первого аргумента в call()
, вы связать this
ключевое слово до array
.
Почему вы используете lambdas BTW? Они по-прежнему не поддерживаются многими браузерами. –
Связано: [Функция стрелки против объявления/выражений функции: являются ли они эквивалентными/сменными?] (Http://stackoverflow.com/q/34361379/218196) –