详解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里使用Dom操作Xml
Sep 20 Javascript
javascript:history.go()和History.back()的区别及应用
Nov 25 Javascript
Jquery getJSON方法详细分析
Dec 26 Javascript
Node.js中使用socket创建私聊和公聊聊天室
Nov 19 Javascript
JS获取数组最大值、最小值及长度的方法
Nov 24 Javascript
JavaScript中的原型继承基础学习教程
May 06 Javascript
ui组件之input多选下拉实现方法(带有搜索功能)
Jul 14 Javascript
JS针对Array的各种操作汇总
Nov 29 Javascript
关于JS与jQuery中的文档加载问题
Aug 22 jQuery
react native 获取地理位置的方法示例
Aug 28 Javascript
vue样式穿透 ::v-deep的具体使用
Jun 04 Javascript
详解实现vue的数据响应式原理
Jan 20 Vue.js
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
Codeigniter生成Excel文档的简单方法
2014/06/12 PHP
PHP获取POST数据的几种方法汇总
2015/03/03 PHP
php经典算法集锦
2015/11/14 PHP
PHP  实现等比压缩图片尺寸和大小实例代码
2016/10/08 PHP
ThinkPHP实现图片上传操作的方法详解
2017/05/08 PHP
javascript编程起步(第一课)
2007/01/10 Javascript
js树形控件脚本代码
2008/07/24 Javascript
JavaScript 浮点数运算 精度问题
2009/10/06 Javascript
javascript中动态函数用法实例分析
2015/05/14 Javascript
jquery实现叠层3D文字特效代码分享
2015/08/21 Javascript
基于jquery实现百度新闻导航菜单滑动动画
2016/03/15 Javascript
jQuery设置单选按钮radio选中/不可用的实例代码
2016/06/24 Javascript
js实现常用排序算法
2016/08/09 Javascript
jQuery easyui刷新当前tabs的方法
2016/09/23 Javascript
浅谈js停止事件冒泡 阻止浏览器的默认行为(阻止超连接 #)
2017/02/08 Javascript
JavaScript原生数组Array常用方法
2017/04/06 Javascript
Layui事件监听的实现(表单和数据表格)
2019/10/17 Javascript
微信小程序基于movable-view实现滑动删除效果
2020/01/08 Javascript
[03:49]2016完美“圣”典风云人物:AMS专访
2016/12/06 DOTA
Python基于QRCode实现生成二维码的方法【下载,安装,调用等】
2017/07/11 Python
python使用MQTT给硬件传输图片的实现方法
2019/05/05 Python
sklearn+python:线性回归案例
2020/02/24 Python
用python对excel查重
2020/12/07 Python
基于canvas的骨骼动画的示例代码
2018/06/12 HTML / CSS
Marlies Dekkers内衣法国官方网上商店:国际知名的荷兰内衣品牌
2019/03/18 全球购物
给排水工程师岗位职责
2013/11/21 职场文书
中学生爱国演讲稿
2013/12/31 职场文书
模具数控专业自荐信
2014/01/27 职场文书
班主任班级寄语大全
2014/04/04 职场文书
销售员岗位职责
2014/06/09 职场文书
教师党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
2014年实验室工作总结
2014/12/03 职场文书
2015年七夕爱情寄语
2015/03/24 职场文书
在校大学生才艺比赛策划书怎么写?
2019/08/26 职场文书
2019年世界儿童日宣传标语
2019/11/22 职场文书
Redis集群节点通信过程/原理流程分析
2022/03/18 Redis