在这种情况下,此关键字适用于什么

时间:2019-04-08 23:48:20

标签: javascript this

我目前正在做一些练习,以加深对'this'关键字的理解。它似乎确实有很多用例,所以我确实在MDN上阅读了有关“ this”的内容。我想知道,本练习中的“ this”关键字指的是什么?我知道,当您使用apply(最多有2个参数)时,第一个参数是您要将此“关键字”引用到的位置,第二个参数是一个数组,在此数组中新引用了“ this”关键字至。 PermissionError在哪里被引用,第二个参数中的参数是什么?是在函数窗口中吗?抱歉,我真的很困惑,想把我的头缠住。这是我很困惑的代码行:

return fn.apply(this,arguments);

2 个答案:

答案 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中,函数也是可以为其分配属性的对象。