function Num(value) {
this.value = parseInt(value);
var num = parseInt(value);
return num;
}
使用了new会让构造函数中创建一个新对象,并将构造函数的作用域赋给新对象(因此this就指向这个新对象),
执行函数中语句(为该对象添加属性)并返回新对象。
如果此函数返回一个基本数据类型的值,又用new去调用,则这个基本数据类型的数值就不返回了。
因此,因为JS中函数没有重载的概念:
var num1 = new Number(18);
var num2 = Number("18");
所以以上两个Number为同一函数,却能有着不同的功能且返回不同的值:
第一句使用new返回Number对象,第二句没加new返回基本类型值,函数中将其他数据类型的参数转换为number基本类型。
这也浅显说明了Array和Date等内置对象构造函数前可以不加new,构造函数里return返回的是相应的对象类型。