详解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 相关文章推荐
修复IE9&safari 的sort方法
Oct 21 Javascript
JS获取地址栏参数的小例子
Aug 23 Javascript
JS 获取滚动条高度示例代码
Oct 24 Javascript
PHP PDO操作总结
Nov 17 Javascript
分享两段简单的JS代码防止SQL注入
Apr 12 Javascript
JS 全屏和退出全屏详解及实例代码
Nov 07 Javascript
整理一些最近经常遇到的前端面试题
Apr 25 Javascript
详解Node.js 命令行程序开发教程
Jun 07 Javascript
webpack+vue2构建vue项目骨架的方法
Jan 09 Javascript
React中的refs的使用教程
Feb 13 Javascript
微信小程序实现文字跑马灯
May 26 Javascript
jQuery简单实现根据日期计算星期几的方法
Jan 09 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
编译php 5.2.14+fpm+memcached(具体操作详解)
2013/06/18 PHP
php使用fopen创建utf8编码文件的方法
2014/10/31 PHP
php实现改变图片直接打开为下载的方法
2015/04/14 PHP
PHP封装的分页类与简单用法示例
2019/02/25 PHP
PHP常用工具函数小结【移除XSS攻击、UTF8与GBK编码转换等】
2019/04/27 PHP
PHP工厂模式、单例模式与注册树模式实例详解
2019/06/03 PHP
漂亮的widgets,支持换肤和后期开发新皮肤(2007-4-27已更新1.7alpha)
2007/04/27 Javascript
如何让div span等元素能响应键盘事件操作指南
2012/11/13 Javascript
js捕获鼠标右键菜单中的粘帖事件实现代码
2013/04/01 Javascript
js 动态为textbox添加下拉框数据源的方法
2014/04/24 Javascript
Jquery实现仿腾讯微博发表广播
2014/11/17 Javascript
Javascript基础教程之数组 array
2015/01/18 Javascript
jquery+ajax实现直接提交表单实例分析
2016/06/17 Javascript
localStorage实现便签小程序
2016/11/28 Javascript
js querySelector() 使用方法
2016/12/21 Javascript
深入理解React Native原生模块与JS模块通信的几种方式
2017/07/24 Javascript
jQuery.Sumoselect插件实现下拉复选框效果
2017/11/09 jQuery
详解Vue快速零配置的打包工具——parcel
2018/01/16 Javascript
bmob js-sdk 在vue中的使用教程
2018/01/21 Javascript
js实现百度淘宝搜索功能
2020/02/17 Javascript
小程序实现图片移动缩放效果
2020/05/26 Javascript
Javascript实现打鼓效果
2021/01/29 Javascript
采用Psyco实现python执行速度提高到与编译语言一样的水平
2014/10/11 Python
Python3实现从文件中读取指定行的方法
2015/05/22 Python
Python搭建APNS苹果推送通知推送服务的相关模块使用指南
2016/06/02 Python
Python爬虫框架Scrapy实例代码
2018/03/04 Python
python自定义函数实现一个数的三次方计算方法
2019/01/20 Python
Python实现简单层次聚类算法以及可视化
2019/03/18 Python
台湾百利市购物中心:e-Payless
2017/08/16 全球购物
英国综合网上购物商城:The Hut
2018/07/03 全球购物
求职信内容考虑哪几点
2013/10/05 职场文书
关于诚信的活动方案
2014/08/18 职场文书
报考公务员诚信承诺书
2014/08/29 职场文书
学校班子个人对照检查材料思想汇报
2014/09/27 职场文书
2014年组织部工作总结
2014/11/14 职场文书
赤壁观后感(2)
2015/06/15 职场文书