详解new function(){}和function(){}() 区别分析


Posted in Javascript onMarch 22, 2008

情景一:
var yx01 = new function() {return "圆心"};
alert(yx01);
我们运行情景一代码,将返回显示“[object object] ”,此时该代码等价于:

function 匿名类(){
    return "圆心";
}
var yx01 = new 匿名类();
alert(yx01);我们对情景一的代码进行下面改造:

var yx01 = new function() {return new String("圆心")};
alert(yx01);
我们运行,将会发现返回的是“圆心”,这是为什么呢?

只要 new 表达式之后的 constructor 返回(return)一个引用对象(数组,对象,函数等),都将覆盖new创建的匿名对象,如果返回(return)一个原始类型(无 return 时其实为 return 原始类型 undefined),那么就返回 new 创建的匿名对象
由于 new String 会构造一个对象,而不是一个 string 直接量,且new String(x) 如果带参数,那么alert它的时候就会返回 x。所以 yx01 将返回 new String(”圆心”) 这个对象,而 alert yx01 则显示 “圆心”。

情景二:

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

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

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

Javascript 相关文章推荐
JQuery里面的几种选择器 查找满足条件的元素$("#控件ID")
Aug 23 Javascript
纯js写的分页表格数据为json串
Feb 18 Javascript
jquery实现Slide Out Navigation滑出式菜单效果代码
Sep 07 Javascript
实例讲解JS中setTimeout()的用法
Jan 28 Javascript
jQuery ajax调用后台aspx后台文件的两种常见方法(不是ashx)
Jun 28 Javascript
angularJS 如何读写缓冲的方法(推荐)
Aug 06 Javascript
值得分享的bootstrap table实例
Sep 22 Javascript
JavaScript 函数的定义-调用、注意事项
Apr 16 Javascript
微信小程序loading组件显示载入动画用法示例【附源码下载】
Dec 09 Javascript
JS实现将链接生成二维码并转为图片的方法
Mar 17 Javascript
JS原型和原型链原理与用法实例详解
Feb 05 Javascript
JS+JQuery实现无缝连接轮播图
Dec 30 jQuery
Javascript的一种模块模式
Mar 22 #Javascript
javascript cookie解码函数(兼容ff)
Mar 17 #Javascript
简单的JS多重继承示例
Mar 13 #Javascript
JMenuTab简单使用说明
Mar 13 #Javascript
JObj预览一个JS的框架
Mar 13 #Javascript
DHTML Slide Show script图片轮换
Mar 03 #Javascript
JavaScript面向对象编程
Mar 02 #Javascript
You might like
discuz论坛 用户登录 后台程序代码
2008/11/27 PHP
php下用cookie统计用户访问网页次数的代码
2010/05/09 PHP
PHPwind整合最土系统用户同步登录实现方法
2010/12/08 PHP
解析php下载远程图片函数 可伪造来路
2013/06/25 PHP
php四种定界符详解
2017/02/16 PHP
php实现留言板功能
2017/03/05 PHP
利用PHP实现一个简单的用户登记表示例
2017/04/25 PHP
Laravel jwt 多表(多用户端)验证隔离的实现
2019/12/18 PHP
用javascript自动显示最后更新时间
2007/03/15 Javascript
js类中获取外部函数名的方法与代码
2007/09/12 Javascript
12个非常有创意的JavaScript小游戏
2010/03/18 Javascript
js focus不起作用的解决方法(主要是因为dom元素是否加载完成)
2010/11/05 Javascript
在JavaScript中typeof的用途介绍
2013/04/11 Javascript
关于Jquery操作Cookie取值错误的解决方法
2013/08/26 Javascript
javascript轮播图算法
2016/10/21 Javascript
如何选择jQuery版本 1.x? 2.x? 3.x?
2017/04/01 jQuery
解决vue router使用 history 模式刷新后404问题
2017/07/19 Javascript
js移动端事件基础及常用事件库详解
2017/08/15 Javascript
解析Vue.js中的组件
2018/02/02 Javascript
vue-cli或vue项目利用HBuilder打包成移动端app操作
2020/07/29 Javascript
对vue生命周期的深入理解
2020/12/03 Vue.js
Python模块学习 datetime介绍
2012/08/27 Python
python文档字符串(函数使用说明)使用详解
2019/07/30 Python
Python中Subprocess的不同函数解析
2019/12/10 Python
python列表切片和嵌套列表取值操作详解
2020/02/27 Python
Python 如何定义匿名或内联函数
2020/08/01 Python
UNIX特点都有哪些
2016/04/05 面试题
网络工程系信息安全技术专业大学生求职信
2013/10/22 职场文书
出纳员岗位职责风险
2014/03/06 职场文书
结婚喜宴主持词
2014/03/14 职场文书
英语演讲稿3分钟
2014/04/29 职场文书
竞选纪律委员演讲稿
2014/09/13 职场文书
党性分析自查总结
2014/10/14 职场文书
党的群众路线教育实践活动心得体会(医院)
2014/11/03 职场文书
2015年出纳年终工作总结
2015/05/14 职场文书
如何使用PyCharm及常用配置详解
2021/06/03 Python