由于我想强制执行 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
答案 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();