参考脚本之家,网址:http://www.jb51.net/article/13895.htm
1 只要new 表达式之后的constructor返回一个引用对象(数组,对象,函数等),都将覆盖new创建的匿名对象。如果返回一个原始类型,那么就返回一个new创建的匿名对象。
var result=new function(){return "圆心"};
alert(result);//[object object]
此时等于:
function 匿名类(){
return "圆心";
}
var result= new 匿名类();
alert(result); //此时为对象
如果改成
var result=new function(){return new String("圆心")};
alert(result);//圆心
返回一个对象,覆盖了new创建的匿名函数对象。
由于 new String 会构造一个对象,而不是一个 string 直接量,且new String(x) 如果带参数,那么alert它的时候就会返回 x。所以 result将返回 new String(”圆心”) 这个对象,而 alert result则显示 “圆心”。
3 var result=function(){return"圆心"}();
alert(result()); //圆心
var result=function(){return"圆心"};
alert(result);// function(){return"圆心"};
alert(result()); //圆心
var result=function(){return"圆心"}();
等价于:
var 匿名函数=function(){return"圆心"};
result=匿名函数();//返回匿名函数的执行结果