Javascript 为什么是';这';等于';窗口';在我的原型函数中?
我有一个Javascript 为什么是';这';等于';窗口';在我的原型函数中?,javascript,Javascript,我有一个原型函数写在数组类上 Array.prototype.myfunc = () => { // ... } 在body中,这个指的是窗口,我在数组中调用它,比如 var result = [1, 69, -1, 1].myfunc(); 如何使其引用调用它的数组?ES6中的胖箭头语法是对当前作用域的隐式绑定 Array.prototype.myfunc = function() { // ... } 如果您当前的作用域是Window(或全局作用域),那么您刚才
原型
函数写在数组
类上
Array.prototype.myfunc = () =>
{
// ...
}
在body中,这个
指的是窗口
,我在数组中调用它,比如
var result = [1, 69, -1, 1].myfunc();
如何使其引用调用它的数组?ES6中的胖箭头语法是对当前作用域的隐式绑定
Array.prototype.myfunc = function() {
// ...
}
如果您当前的作用域是Window
(或全局作用域),那么您刚才在原型上设置的函数将绑定到该作用域
对于没有绑定的行为,您仍然需要良好的ol'
函数()
语法。箭头语法绑定到当前的这个窗口(取决于您分配函数的时间)。这里不要使用箭头函数,箭头函数从父作用域继承上下文
Array.prototype.myfunc = function() {
// ...
}
导致您出现问题的原因是使用了箭头功能
在箭头函数中,此
关键字可能指:
窗口(如果全局访问,而不是在严格模式下访问)
未定义(如果在严格模式下全局访问)
实例(如果在构造函数中)
对象(如果在对象或实例内部的方法或函数中)或
绑定/应用的值
要解决此问题,您必须使用“普通”的函数()
,并且可以使用调用(此,…参数)
调用您的函数:
- 在
this
中,您将要将关键字this
绑定到的对象放入中,然后
- 在
.args
中,输入函数的参数
因此,考虑到上述内容,您的代码可以如下所示:
Array.prototype.myfunc = function(...) {
// Your code
}
var array = [1, 69, -1, 1];
var result = myfunc.call(array, ...);
- 使用
array
作为call()
中的第一个参数,您可以将此
关键字绑定到数组
顺便说一句,您为什么使用lambdas?许多浏览器仍然不支持它们。相关: