[size=medium]作为一个学习过其他语言的程序员来说,对new肯定不陌生。 我一度也是这样。
但是前两天突然想到这样的代码时,我就懵了。[/size]
但是前两天突然想到这样的代码时,我就懵了。[/size]
function Person(name){
this.name = name;
}
var p1 = new Person("mike");
var p2 = Person("jack"); /*这个不会报错,这里Person作为函数被调用,该函数没有返回任何值,所以p2是undefined,作为一个java程序员,我当时在这里确实懵了*/
console.log(p1);
console.log(p2);
之所以有疑惑,还是因为对javascript的函数理解不够。
经过查阅资料,就是作为参考书的《JavaScript权威指南(第五版)》,大概弄清楚了,但是还不够清楚。
1、 new是一个运算符,它首先创建一个对象,该对象的属性都未定义,接下来,它将调用特定的构造函数,传递指定的参数,此外还要把新创建的对象传递给关键字this。这样构造函数就可以使用关键字this来初始化新对象。
2、没有参数时,可以省去括号。