当用new和常规函数调用时,javascript构造函数中“ this”的值

时间:2018-11-23 17:15:14

标签: javascript javascript-objects

我无法理解以下代码,

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” 的值是什么?

0 个答案:

没有答案