new的试验结果,详细的查网上new的讲解,这里记录下简单的现象。
一般来说,对于一个构造器函数如果用new会创建一个对象,但如果这个构造器函数里奇怪的去return一个返回值,那么如果这个返回值的类型是函数类型,那么构造器就按这个返回的东西来构造,比如最常见的
控制台查看dog变量,显示
Dog {name: "dahuang"}
控制台查看dog变量,还是显示
Dog {name: "dahuang"}
查看dog2变量,显示
123
在new的时候,return没有起作用。这时,去return一个函数类型看看
控制台查看dog变量和dog2变量,都显示:
function (){
this.age = 18;
}
即,如果构造函数return的类型是函数类型,那么new和不new效果一样。都返回return的这个函数类
一般来说,对于一个构造器函数如果用new会创建一个对象,但如果这个构造器函数里奇怪的去return一个返回值,那么如果这个返回值的类型是函数类型,那么构造器就按这个返回的东西来构造,比如最常见的
var Dog = function(){
this.name = "dahuang";
}
var dog = new Dog()
控制台查看dog变量,显示
Dog {name: "dahuang"}
var Dog = function(){
this.name = "dahuang";
return 123;
}
var dog = new Dog()
var dog2 = Dog()
控制台查看dog变量,还是显示
Dog {name: "dahuang"}
查看dog2变量,显示
123
在new的时候,return没有起作用。这时,去return一个函数类型看看
var Dog = function(){
this.name = "dahuang";
return function(){
this.age = 18;
};
}
var dog = new Dog();
var dog2 = Dog();
控制台查看dog变量和dog2变量,都显示:
function (){
this.age = 18;
}
即,如果构造函数return的类型是函数类型,那么new和不new效果一样。都返回return的这个函数类