这是一个函数:

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==4

3.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/

10-10 16:35