“this”在函数的call语句中引用什么,作为另一个函数的方法

时间:2014-07-02 22:51:54

标签: javascript

如果我看到带有这样的构造函数的代码:

function F(){}
F.prototype.k = "v";

function F2(){
    F.call(this);
}

“this”在这里指的是什么?我有点迷茫。它会是F2还是F?

1 个答案:

答案 0 :(得分:3)

任何函数中的

this都取决于函数的调用方式,并且没有显示调用F2()的方式,但是这段代码的作用是说无论设置this是什么在F2中,在this执行时,F()使用相同的值。

  1. 如果调用F2()就像F2()一样,那么this将是全局对象(浏览器中的window)或undefined (如果在严格模式下运行)。

  2. 如果F2被称为:

    var obj = new F2();

    然后,this将设置为新创建的F2实例。

  3. 方法F2.apply(x)F2.call(x)可以根据您传递的内容作为第一个参数来确定在给定函数中将设置this的内容。

    < / LI>
  4. 如果它是obj.method()中的方法调用,则this设置为obj