JS中的自调构造函数

时间:2013-09-02 02:37:42

标签: javascript

由于我想强制执行 new ,我创建了如下构造函数。它工作正常,即使我没有使用 new 调用构造函数,实例仍然可以获取属性。但我感到困惑,因为在if语句中,它已经返回,为什么可以调用if语句下面的语句?

function Car(){
    if(!(this instanceof Car)){
        return new Car();
        console.log("can i arrive here?");
    }
    this.tires = "I have four tires";
    console.log("yeah,I can arrive here");
}

//Note: without new
var car = Car();//output=> yeah,I can arrive here
console.log(car.tires);//output => I have four tires

3 个答案:

答案 0 :(得分:3)

此代码中有{strong>两次对Car的调用。第一个:

var car = Car();

导致第二次通话:

return new Car();

第二次调用执行console.log("yeah,I can arrive here");。第一个调用从不运行该行。否则,你会看到输出两次。

答案 1 :(得分:0)

要了解的事情

一:{}之间的代码不会在返回false的if语句中执行。

二:return退出一个函数。

var iAmRight = true;

function checkAwesome(){

   if ( !iAmRight ){
      return "i never arrived here";
      return "even if i wasent awesome i wouldnt arrive here";
   }
   //so therefore you can

   return "i am awesome";

}

checkAwesome();

答案 2 :(得分:0)

您的return new Car()正在执行中。只需将console.log("can i arrive here?");放在return new Car();

之前