这是一个功能:
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这条线的意义是什么(如果它没有错误就有意义,对吧?)
如果不正确或可能更好,请回答我的问题或更正我的陈述。
谢谢。
答案 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'关键字之后应该是将用作构造函数的函数名称。可以跳过参数。