详解new function(){}和function(){}() 区别分析_Javascript教程-查字典教程网
详解new function(){}和function(){}() 区别分析
详解new function(){}和function(){}() 区别分析
发布时间:2016-12-30 来源:查字典编辑
摘要:情景一:varyx01=newfunction(){return"圆心"};alert(yx01);我们运行情景一代码,将返回显示“[obj...

情景一:

varyx01=newfunction(){return"圆心"};

alert(yx01);

我们运行情景一代码,将返回显示“[objectobject]”,此时该代码等价于:

function匿名类(){

return"圆心";

}

varyx01=new匿名类();

alert(yx01);我们对情景一的代码进行下面改造:

varyx01=newfunction(){returnnewString("圆心")};

alert(yx01);

我们运行,将会发现返回的是“圆心”,这是为什么呢?

只要new表达式之后的constructor返回(return)一个引用对象(数组,对象,函数等),都将覆盖new创建的匿名对象,如果返回(return)一个原始类型(无return时其实为return原始类型undefined),那么就返回new创建的匿名对象

由于newString会构造一个对象,而不是一个string直接量,且newString(x)如果带参数,那么alert它的时候就会返回x。所以yx01将返回newString(”圆心”)这个对象,而alertyx01则显示“圆心”。

情景二:

varyx02=function(){return"圆心"}();

alert(yx02);我们运行情景二代码,将返回显示“圆心”,此时该代码等价于:

var匿名函数=function(){return"圆心"};

yx02=匿名函数();

alert(yx02);很明显,yx02返回的是匿名函数的执行结果值,即yx02为:“圆心”。

当然匿名函数的执行结果也可以为一个匿名对象。具体常见应用可以看《Javascript的一种模块模式》

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新Javascript教程学习
    热门Javascript教程学习
    编程开发子分类