详解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拖拽元素改变大小尺寸实现代码
Dec 10 Javascript
浅析Js(Jquery)中,字符串与JSON格式互相转换的示例(直接运行实例)
Jul 09 Javascript
Extjs 4.x 得到form CheckBox 复选框的值
May 04 Javascript
JavaScript实现穷举排列(permutation)算法谜题解答
Dec 29 Javascript
jQuery简单实现tab选项卡切换效果
Jun 20 Javascript
百度地图API之百度地图退拽标记点获取经纬度的实现代码
Jan 12 Javascript
微信小程序tabbar不显示解决办法
Jun 08 Javascript
webpack 2的react开发配置实例代码
Jul 28 Javascript
jQuery实现全选、反选和不选功能
Aug 16 jQuery
vue 中filter的多种用法
Apr 26 Javascript
JavaScript实现简单随机点名器
Nov 21 Javascript
Node.js中的异步生成器与异步迭代详解
Jan 31 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模块 Memcached功能多于Memcache
2011/06/14 PHP
浅析51个PHP处理字符串的函数
2013/08/02 PHP
[原创]php逐行读取txt文件写入数组的方法
2015/07/02 PHP
php实现贪吃蛇小游戏
2016/07/26 PHP
php使用file函数、fseek函数读取大文件效率对比分析
2016/11/04 PHP
php获取微信共享收货地址的方法
2017/12/21 PHP
PHP 裁剪图片
2021/03/09 PHP
jQuery 性能优化指南(2)
2009/05/21 Javascript
文字溢出实现溢出的部分再放入一个新生成的div中具体代码
2013/05/17 Javascript
JS常用字符串处理方法应用总结
2014/05/22 Javascript
jQuery入门之层次选择器实例简析
2015/12/11 Javascript
jQuery unbind()方法实例详解
2016/01/19 Javascript
javascript的BOM
2016/05/03 Javascript
浅谈JS正则表达式的RegExp对象和括号的使用
2016/07/28 Javascript
Vue实现双向数据绑定
2017/05/03 Javascript
angularJS 发起$http.post和$http.get请求的实现方法
2017/05/18 Javascript
JavaScript仿微信(电话)联系人列表滑动字母索引实例讲解(推荐)
2017/08/16 Javascript
详解react关于事件绑定this的四种方式
2018/03/09 Javascript
[05:42]DOTA2英雄梦之声_第10期_蝙蝠骑士
2014/06/21 DOTA
Python对两个有序列表进行合并和排序的例子
2014/06/13 Python
用Python编写生成树状结构的文件目录的脚本的教程
2015/05/04 Python
Python编程中对文件和存储器的读写示例
2016/01/25 Python
python 调用c语言函数的方法
2017/09/29 Python
Python递归实现汉诺塔算法示例
2018/03/19 Python
Python Cookie 读取和保存方法
2018/12/28 Python
对python中的float除法和整除法的实例详解
2019/07/20 Python
Python使用scipy模块实现一维卷积运算示例
2019/09/05 Python
python函数enumerate,operator和Counter使用技巧实例小结
2020/02/22 Python
Python爬取豆瓣数据实现过程解析
2020/10/27 Python
EQVVS官网:设计师男装和女装
2018/10/24 全球购物
出纳工作检讨书
2014/10/18 职场文书
2014年圣诞节寄语
2014/12/08 职场文书
2014年出纳工作总结与计划
2014/12/09 职场文书
清洁工岗位职责
2015/02/13 职场文书
2016年感恩父亲节活动总结
2016/04/01 职场文书
SQL使用复合索引实现数据库查询的优化
2022/05/25 SQL Server