我目前正在做一些练习,以加深对'this'关键字的理解。它似乎确实有很多用例,所以我确实在MDN上阅读了有关“ this”的内容。我想知道,本练习中的“ this”关键字指的是什么?我知道,当您使用apply(最多有2个参数)时,第一个参数是您要将此“关键字”引用到的位置,第二个参数是一个数组,在此数组中新引用了“ this”关键字至。 PermissionError
在哪里被引用,第二个参数中的参数是什么?是在函数窗口中吗?抱歉,我真的很困惑,想把我的头缠住。这是我很困惑的代码行:
return fn.apply(this,arguments);
答案 0 :(得分:2)
您可以在返回的函数中ssh -X ...
console.log()
进行查找。在这里,您将看到它指向全局对象(或浏览器中的窗口)。此代码不依赖于this
尤其重要。您可以将其重写为:
this
并获得相同的结果。
return fn.apply(null, arguments);
由调用函数的方式确定。这里的函数返回一个函数(大概),您将自己调用它,所以唯一的调用上下文是窗口:
this
在不同的上下文中调用相同的函数会导致function add(a, b) {
return a + b;
}
function invokeMax(fn, num) {
var counter = 0;
return function() {
counter++;
if (counter > num) {
return 'Maxed Out!';
}
console.log("this is window?", this === window)
return fn.apply(this, arguments);
};
}
let f = invokeMax(add, 2)
console.log(f(5, 6))
的值不同:
this
根据评论进行编辑
一个基本的function add(a, b) {
return a + b;
}
function invokeMax(fn, num) {
var counter = 0;
return function() {
counter++;
if (counter > num) {
return 'Maxed Out!';
}
console.log("this: ", this)
return fn.apply(this, arguments);
};
}
let someObj = {name: "myObj"}
someObj.f = invokeMax(add, 2) // now this will be someObj
someObj.f()
示例。函数将使用传递给apply()
第一个参数的对象作为函数中的apply()
:
this
答案 1 :(得分:0)
在这种情况下,this
引用当前作用域,即包含this
的函数。在JavaScript中,函数也是可以为其分配属性的对象。