我有一个prototype
功能写在Array
类像为什么我的原型函数中'this'等于'Window'?
Array.prototype.myfunc =() =>
{
// ...
}
和身体this
指的是window
当我把它称为一个数组像
var result = [1, 69, -1, 1].myfunc();
我怎样才能使参考范围内到它被调用的数组?
我有一个prototype
功能写在Array
类像为什么我的原型函数中'this'等于'Window'?
Array.prototype.myfunc =() =>
{
// ...
}
和身体this
指的是window
当我把它称为一个数组像
var result = [1, 69, -1, 1].myfunc();
我怎样才能使参考范围内到它被调用的数组?
该() => { }
箭头语法绑定到当前this
这可能是window
(取决于您何时分配函数)。
ES6中的胖箭头语法是对当前作用域的隐式绑定。
如果您当前的作用域为Window
(或全局作用域),那么您在原型上设置的函数将绑定到该作用域。
对于没有绑定的行为,您仍然需要良好的ol'function()
语法。
这里只是不使用箭头函数,箭头函数继承父范围的上下文。
Array.prototype.myfunc = function() {
// ...
}
是什么造成您的问题是使用箭头功能的。
在箭头功能,所述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) –