需要javascript代码说明

时间:2014-02-28 10:09:04

标签: javascript function class object instance

这是一个功能:

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这条线的意义是什么(如果它没有错误就有意义,对吧?)

如果不正确或可能更好,请回答我的问题或更正我的陈述。

谢谢。

2 个答案:

答案 0 :(得分: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();

的别名

答案 1 :(得分:1)

由于javascript语法,语句4相当于语句3。在'new'关键字之后应该是将用作构造函数的函数名称。可以跳过参数。