gpt4 book ai didi

javascript - 我对 JavaScript 中的关键字 'this' 感到困惑

转载 作者:搜寻专家 更新时间:2023-11-01 04:26:21 26 4
gpt4 key购买 nike

这是一个例子:

function one() {

var a = 1;
two();

function two() {

var b = 2;
three();

function three() {

var c = 3;
alert(a + b + c); // 6

}
}
}

one()​; //calling the function

现在当我们调用函数 one() 时,结果是 6

所以这都是关于作用域链的,所有变量都已解析,现在我有一个问题。

当所有变量都通过作用域链解析时,为什么我们需要这个“this”关键字?

如果我们有以下函数:

function a() {
var a = 'function a';

function b() {
var b = 'function b';
alert (a); //will be function a, without keyword this
alert (this.a); // what will be the effect of this line
}
}

“this”关键字总是让我感到困惑!

请哪位深入浅出地解释一下。

最佳答案

他们关键字this在JavaScript中的函数中通过以下方式解析-

  1. 当在一个对象上或通过一个对象调用函数时,该对象就是调用函数的上下文或“this”值。例如 -

    var o = {
    f : function(){
    //do something
    }
    }

    如果我们使用对象“o”调用对象“o”的方法“f”——

    o.f()// in method f, 'this' refers to o inside the method o
  2. 如果函数不是在对象上调用或不是通过对象调用,则当前窗口对象是函数的调用上下文或 this 值。例如-

    function f(){
    //do something
    }

    //calling f
    f();// 'this' will refer to current window object

在您的例子中,this 指的是当前窗口对象,this.a 是对您在全局范围内定义的函数 a 的引用。

此外,可以在调用函数时提供函数的调用上下文或“this”值。请查看Function.prototype.call method - JavaScript | MDNFunction.prototype.apply method - JavaScript | MDN

关于javascript - 我对 JavaScript 中的关键字 'this' 感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14847059/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com