如果我看到带有这样的构造函数的代码:
function F(){}
F.prototype.k = "v";
function F2(){
F.call(this);
}
“this”在这里指的是什么?我有点迷茫。它会是F2还是F?
答案 0 :(得分:3)
this
都取决于函数的调用方式,并且没有显示调用F2()
的方式,但是这段代码的作用是说无论设置this
是什么在F2
中,在this
执行时,F()
使用相同的值。
如果调用F2()
就像F2()
一样,那么this
将是全局对象(浏览器中的window
)或undefined
(如果在严格模式下运行)。
如果F2
被称为:
var obj = new F2();
然后,this
将设置为新创建的F2
实例。
方法F2.apply(x)
和F2.call(x)
可以根据您传递的内容作为第一个参数来确定在给定函数中将设置this
的内容。
如果它是obj.method()
中的方法调用,则this
设置为obj
。