new 函数和不new函数返回值的区别
function A() { this.name = "hello"; return this.name; } function B() { this.name = { "name": "hello" }; return this.name; } function C() { this.name = "hello"; return function() { return this.name; }; } var a = new A(); console.log(a); //打印出完整的a对象,由于return是个值,被直接无视了 var a1 = A(); console.log(a1); //打印出hello,这个很正常 var b = new B(); console.log(b); //打印出完整的name对象{"name","hello"},return的值因为是个对象,没有被无视,这点和function A不同 var c = new C(); console.log(c); //打印出return的 anonymous function,也没有被无视,和function A 不同 通过上面的例子我们可以看出, 使用new关键字初始化的function会返回this对象, 而无视return的值, 除非return的是一个对象, 或者function。 而直接使用Function() 方式则直接返回return的值。
//补充一个小知识点,构造函数才有原型,如果直接是对象的话是会报错的
var obj=function(){};//这里如果是var obj={};直接是对象
obj.prototype.show=function(){
alert(1);
}