我无法理解以下代码,
function Foo(arg) {
if (!(this instanceof Foo)){
alert("inside if statement");
return new Foo(arg);
}
else{
alert("inside else statement")
}
this.myArg = arg;
}
let foo_obj = Foo("bar");
alert(foo_obj.myArg);
执行程序时,如果首先遇到if语句,它将检查“ this” (当时是窗口对象)是否在其中包含“ Foo” 原型链,因为它不存在,所以执行以下操作
返回新的Foo(arg);
因此再次调用Foo,但是这次执行“ else” 部分。为什么呢?第二次“ this” 的值是什么?