详解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 相关文章推荐
重构Javascript代码示例(重构前后对比)
Jan 23 Javascript
jquery怎样实现ajax联动框(一)
Mar 08 Javascript
js实现屏蔽默认快捷键调用自定义事件示例
Jun 18 Javascript
删除Javascript Object中间的key
Nov 18 Javascript
javascript面向对象之共享成员属性与方法及prototype关键字用法
Jan 13 Javascript
JavaScript通过元素索引号删除数组中对应元素的方法
Mar 18 Javascript
javascript 实现map集合
Apr 03 Javascript
Three.js学习之文字形状及自定义形状
Aug 01 Javascript
Javascript 动态改变imput type属性
Nov 01 Javascript
AngularJS封装$http.post()实例详解
May 06 Javascript
js 将canvas生成图片保存,或直接保存一张图片的实现方法
Jan 02 Javascript
实例讲解React 组件
Jul 07 Javascript
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
用PHP控制用户的浏览器--ob*函数的使用说明
2007/03/16 PHP
PHP下SSL加密解密、验证、签名方法(很简单)
2020/06/28 PHP
PHP实现非阻塞模式的方法分析
2018/07/26 PHP
jquery ui 1.7 ui.tabs 动态添加与关闭(按钮关闭+双击关闭)
2010/04/01 Javascript
基于jQuery+HttpHandler实现图片裁剪效果代码(适用于论坛, SNS)
2011/09/02 Javascript
解析微信JS-SDK配置授权,实现分享接口
2016/12/09 Javascript
十大 Node.js 的 Web 框架(快速提升工作效率)
2017/06/30 Javascript
Vue.js实例方法之生命周期详解
2017/07/03 Javascript
vue组件实现弹出框点击显示隐藏效果
2020/10/26 Javascript
vue源码学习之Object.defineProperty 对数组监听
2018/05/30 Javascript
小程序实现人脸识别功能(百度ai)
2018/12/23 Javascript
[02:33]2014DOTA2 TI每日综述 LGD涉险晋级DK闯入胜者组
2014/07/14 DOTA
Python实时获取cmd的输出
2015/12/13 Python
Python网络爬虫神器PyQuery的基本使用教程
2018/02/03 Python
使用pandas对矢量化数据进行替换处理的方法
2018/04/11 Python
你还在@微信官方?聊聊Python生成你想要的微信头像
2019/09/25 Python
wxPython绘图模块wxPyPlot实现数据可视化
2019/11/19 Python
tensorflow的计算图总结
2020/01/12 Python
python3 deque 双向队列创建与使用方法分析
2020/03/24 Python
python中rb含义理解
2020/06/18 Python
python闭包与引用以及需要注意的陷阱
2020/09/18 Python
Python实现异步IO的示例
2020/11/05 Python
使用CSS3实现一个3D相册效果实例
2016/12/03 HTML / CSS
CSS3 创建网页动画实现弹跳球动效果
2018/10/30 HTML / CSS
伯利陶器:Burleigh Pottery
2018/01/03 全球购物
来自世界各地的优质葡萄酒:VineShop24
2018/07/09 全球购物
婚礼证婚人证婚词
2014/01/13 职场文书
初中科学教学反思
2014/01/21 职场文书
酒店总经理职务说明书
2014/02/26 职场文书
网络管理专业求职信
2014/03/15 职场文书
节约能源标语
2014/06/17 职场文书
岗位说明书标准范本
2014/07/30 职场文书
2014年防汛工作总结
2014/12/08 职场文书
2015年世界水日活动总结
2015/02/09 职场文书
golang elasticsearch Client的使用详解
2021/05/05 Golang
python文本处理的方案(结巴分词并去除符号)
2021/05/26 Python