详解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 相关文章推荐
JS中setTimeout()的用法详解
Apr 14 Javascript
Extjs4 GridPanel的主要配置参数详细介绍
Apr 18 Javascript
jquery 按键盘上的enter事件
May 11 Javascript
jQuery控制cookie过期时间的方法
Apr 07 Javascript
jQuery标签编辑插件Tagit使用指南
Apr 21 Javascript
JavaScript 实现完美兼容多浏览器的复制功能代码
Apr 28 Javascript
实例讲解jQuery EasyUI tree中state属性慎用
Apr 01 Javascript
Bootstrap每天必学之附加导航(Affix)插件
Apr 25 Javascript
JQuery解析XML数据的几个简单实例
May 18 Javascript
Javascript iframe交互并兼容各种浏览器的解决方法
Jul 12 Javascript
如何提高Dom访问速度
Jan 05 Javascript
JS实现两周内自动登录功能
Mar 23 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计算当前程序执行时间示例
2014/04/24 PHP
PHP图片等比例缩放生成缩略图函数分享
2014/06/10 PHP
php缓冲输出实例分析
2015/01/05 PHP
php mongodb操作类 带几个简单的例子
2016/08/25 PHP
PHP API接口必备之输出json格式数据示例代码
2017/06/27 PHP
yii2.0整合阿里云oss的示例代码
2017/09/19 PHP
[IE&FireFox兼容]JS对select操作
2007/01/07 Javascript
用JavaScript调用WebService的示例
2008/04/07 Javascript
7个Javascript地图脚本整理
2009/10/20 Javascript
JS 动态获取节点代码innerHTML分析 [IE,FF]
2009/11/30 Javascript
用JS写的一个TableView控件代码
2010/01/23 Javascript
JS、DOM和JQuery之间的关系示例分析
2014/04/09 Javascript
详解JavaScript中数组的相关知识
2015/07/29 Javascript
JavaScript循环_动力节点Java学院整理
2017/06/28 Javascript
关于jQuery.ajax()的jsonp碰上post详解
2017/07/02 jQuery
vue实现select下拉显示隐藏功能
2019/09/30 Javascript
微信小程序实现侧边分类栏
2019/10/21 Javascript
vue-dplayer 视频播放器实例代码
2019/11/08 Javascript
[01:32:10]NAVI vs VG Supermajor 败者组 BO3 第一场 6.5
2018/06/06 DOTA
Tornado服务器中绑定域名、虚拟主机的方法
2014/08/22 Python
Python用户推荐系统曼哈顿算法实现完整代码
2017/12/01 Python
Numpy数组的保存与读取方法
2018/04/04 Python
python3 cvs将数据读取为字典的方法
2018/12/22 Python
浅谈python中统计计数的几种方法和Counter详解
2019/11/07 Python
python判断all函数输出结果是否为true的方法
2020/12/03 Python
CSS实现鼠标滑过鼠标点击代码写法
2016/12/26 HTML / CSS
HTML5 Canvas API中drawImage()方法的使用实例
2016/03/25 HTML / CSS
澳大利亚百货公司:David Jones
2018/02/08 全球购物
Java如何获得ResultSet的总行数
2016/09/03 面试题
超市端午节活动方案
2014/01/23 职场文书
竞争性谈判邀请书
2014/02/06 职场文书
2016年中秋节晚会领导致辞
2015/11/26 职场文书
python实现socket简单通信的示例代码
2021/04/13 Python
Win10系统下配置Java环境变量
2021/06/13 Java/Android
spring项目中切面及AOP的使用方法
2021/06/26 Java/Android
react 路由Link配置详解
2021/11/11 Javascript