gpt4 book ai didi

javascript - 'this'关键字,不清楚

转载 作者:数据小太阳 更新时间:2023-10-29 05:40:36 26 4
gpt4 key购买 nike

我对以下代码中的“this”关键字感到困惑,有两个“this”:

var Foo = function(string){
this.name=string // 1st-this
}

Foo.prototype.get_name = function(){
return this.name // 2nd-this
}

var myFoo = new Foo('John')

the_name=myFoo.get_name()

'the_name'等于'John',原型(prototype)方法通过返回this.name得到名字。但是谁能给我解释一下 1st-this 和 2nd-this,它们代表什么?

最佳答案

在 Javascript 中,this 的值取决于调用函数的方式

JS中有5种调用函数的方式,都对this有影响:

  1. new Foo(); <= 在这里,您正在创建一个新对象,并且 this将反射(reflect)该新对象
  2. Foo(); <= 在这里,您按原样调用函数,并且 this将是全局对象(!)
  3. var obj = { foo: Foo };<br/>
    obj.foo();
    <= 此处,您将该函数作为 obj 的方法调用; this将是 obj
  4. Foo.call(thisObject, arg1, arg2); <=这里可以指定this的值在第一个参数中
  5. Foo.apply(thisObject, [args]); <=这里可以指定this的值在第一个参数中

4和5中call的区别和 applycall吗? ,您需要单独传递所有参数,而使用 apply ,您可以传递一个包含所有参数的数组。

请注意,在我上面的示例 2 中,函数应该 已被调用 foo而不是 Foo .因为不可能直接知道一个函数是否应该用 new 调用与否,如果它是构造函数(并且应该与 new 一起使用),共识是函数名称以大写字母开头;否则,它应该以小写开头。

关于javascript - 'this'关键字,不清楚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5429739/

26 4 0
文章推荐: javascript - 如何知道
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com