1

由于我想强制执行new,因此我创建了如下构造函数。它工作正常,即使我不使用new调用构造函数,实例仍然可以获得属性。但是我很困惑,既然在 if 语句中,它已经return,为什么可以调用 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
4

3 回答 3

3

这段代码中有两个调用Car。第一个:

var car = Car();

导致第二次调用:

return new Car();

第二调用执行console.log("yeah,I can arrive here");。第一个电话永远不会运行那条线。否则,您会看到两次输出。

于 2013-09-02T02:45:20.060 回答
0

要知道的事情

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

二:returnexit是一个函数。

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();
于 2013-09-02T02:40:26.957 回答
0

return new Car()的正在被处决。只是放在console.log("can i arrive here?");前面return new Car();

于 2013-09-02T02:42:58.857 回答