如果我看到带有这样的构造函数的代码:
function F(){}
F.prototype.k = "v";
function F2(){
F.call(this);
}
这里的“这个”指的是什么?我有点迷失了。是F2还是F?
最佳答案
任何函数中的
this
都是由函数的调用方式决定的,并且您没有显示 F2()
是如何调用的,但是这段代码正在做的是说无论 F2
中的 this
设置为何,在执行 F()
时对 this
使用相同的值。
如果像
F2()
一样调用F2()
,则this
将是全局对象 (window
(在浏览器中)或未定义
(如果在严格模式下运行)。如果
F2
的调用方式如下:var obj = new F2();
然后,
this
将被设置为新创建的F2
实例。F2.apply(x)
和F2.call(x)
方法可以确定this
将设置为什么根据您作为第一个参数传递的内容在给定函数中。如果它是
obj.method()
中的方法调用,则this
将设置为obj
。
关于javascript - "this"在函数的调用语句中作为另一个函数的方法引用什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24542331/