这是一个函数:
function ShowHelloWorld(){
this.x=4;
var y=5;
return 6;
}
陈述1.
var res1 = ShowHelloWorld;
1.1因此,
res1
是ShowHelloWorld函数的副本。1.2
res1()
得到6。1.3无法通过
res1
达到值4和5。声明2.
var res2 = ShowHelloWorld();
2.1
res2
作为函数结果得到6。2.2无法通过
res2
达到值4和5。陈述3.
var res3 = new ShowHelloWorld();
3.1此处
res3
是函数ShowHelloWorld()的实例。3.2
res3.x
可以达到。 //res3.x==43.3无法通过
res3
达到值5和6。语句4.
var res4 = new ShowHelloWorld;
//不带()4.1好像res4是相同的
res3
。为什么? (我在浏览器控制台中对其进行测试时看到的是相同的)。4.2这条线的含义是什么(如果没有错误,这是有意义的,对吗?)
请回答我的问题或更正我的陈述,以防它们不正确甚至更好。
谢谢。
最佳答案
1)res1
不是ShowHelloWorld
的副本。这只是一个参考,一个别名。
2)res2
是调用ShowHelloWorld
的结果。其余的是真的。
3)有点正确。但是,如果返回一个对象(6
是基元,而不是对象),则new
将返回该对象。看看这个片段:
function ShowHelloWorld(){
this.x=4;
var y=5;
return {};
}
现在,除了最终对象
{}
,其他任何内容都无法访问。因此,如果您要将函数视为类(即,要在其上使用new
),则最好省略return
语句。4)
new ShowHelloWorld;
只是new ShowHelloWorld();
的别名关于javascript - 所需的javascript代码说明,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22092073/