Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在这种情况下,This关键字适用于什么_Javascript_This - Fatal编程技术网

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

Javascript 在这种情况下,This关键字适用于什么,javascript,this,Javascript,This,我目前正在做一些练习,以加深对“this”关键字的理解。它似乎有很多用例,所以我确实在MDN上读到了“这个”。我想知道,这个练习中的“this”关键字指的是什么?我知道,当您使用apply(最多有2个参数)时,第一个参数是希望引用this“关键字”的位置,第二个参数是新引用this“关键字”的数组。其中是返回fn.apply(这是参数)被引用,第二个参数中的参数是什么?它在功能中,窗口中吗?对不起,我真的很困惑,想把我的头绕过去。这是我感到困惑的一行代码: function add(a, b)

我目前正在做一些练习,以加深对“this”关键字的理解。它似乎有很多用例,所以我确实在MDN上读到了“这个”。我想知道,这个练习中的“this”关键字指的是什么?我知道,当您使用apply(最多有2个参数)时,第一个参数是希望引用this“关键字”的位置,第二个参数是新引用this“关键字”的数组。其中是
返回fn.apply(这是参数)被引用,第二个参数中的参数是什么?它在功能中,窗口中吗?对不起,我真的很困惑,想把我的头绕过去。这是我感到困惑的一行代码:


function add(a, b) {
  return a + b;
}

function invokeMax(fn, num) {
  var counter = 0;
  return function() {
    counter++;
    if (counter > num) {
      return 'Maxed Out!';
    }
    return fn.apply(this, arguments);
  };
}

您可以在返回的函数中
console.log()
this
,并找到答案。在这里,您将看到它指向全局对象(或浏览器中的窗口)。此代码不依赖于
是否为任何特定内容。您可以将其改写为:

return fn.apply(null, arguments); 
得到同样的结果

由调用函数的方式决定。这里的函数返回一个函数,您可能只需要自己调用该函数,因此唯一调用的上下文是窗口:

功能添加(a、b){
返回a+b;
}
函数invokeMax(fn,num){
var计数器=0;
返回函数(){
计数器++;
如果(计数器>数值){
返回“Maxed Out!”;
}
log(“这是窗口吗?”,这==窗口)
返回fn.apply(这是参数);
};
}
设f=invokeMax(加法,2)

log(f(5,6))
在该实例中,
指当前作用域,即包含此
的函数。在JavaScript中,函数也是可以分配属性的对象。

这是。我喜欢你的解释。非常感谢你。为了确保我正确理解这一点,fn.apply允许我接受全局范围内的任何函数作为我的第一个参数,对吗?
apply
的第一个参数将是函数内部用作
this
的值。使用一个简单的示例可能会更容易-请参见编辑以获取基本示例。