详解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 简单图片导航插件jquery.imgNav.js
Mar 17 Javascript
safari,opera嵌入iframe页面cookie读取问题解决方法
Jun 23 Javascript
Knockoutjs快速入门(经典)
Dec 24 Javascript
28个常用JavaScript方法集锦
Jan 14 Javascript
JQUERY简单按钮轮换选中效果实现方法
May 07 Javascript
jQueryUI DatePicker 添加时分秒
Jun 04 Javascript
javascript实现去除HTML标签的方法
Dec 26 Javascript
flag和jq on 的绑定多个对象和方法(必看)
Feb 27 Javascript
给Easyui-Datebox设置隐藏或者不可用的解决方法
May 26 Javascript
Angular17之Angular自定义指令详解
Jan 21 Javascript
微信小程序中为什么使用var that=this
Aug 27 Javascript
不依任何赖第三方,单纯用vue实现Tree 树形控件的案例
Sep 21 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入门的学习方法
2007/01/02 PHP
php获取网页内容方法总结
2008/12/04 PHP
php中关于codeigniter的xmlrpc的类在进行数据交换时的类型问题
2011/07/03 PHP
Linux系统下PHP-FPM的安装和配置教程
2015/08/17 PHP
php flush无效,IIS7下php实时输出的方法
2016/08/25 PHP
Laravel模型间关系设置分表的方法示例
2018/04/21 PHP
PHP crc32()函数讲解
2019/02/14 PHP
CI框架教程之优化验证码机制详解【验证码辅助函数】
2019/04/16 PHP
用户注册常用javascript代码
2009/08/29 Javascript
javascript如何判断输入的url是否正确
2014/04/11 Javascript
jQuery获取iframe的document对象的方法
2014/10/10 Javascript
Lua表达式和控制结构学习笔记
2014/12/15 Javascript
JavaScript闭包详解
2015/02/02 Javascript
JavaScript截断字符串的方法
2015/07/15 Javascript
用js动态添加html元素,以及属性的简单实例
2016/07/19 Javascript
Angularjs验证用户输入的字符串是否为日期时间
2017/06/01 Javascript
JS实现的加减乘除四则运算计算器示例
2017/08/09 Javascript
vue 通过下拉框组件学习vue中的父子通讯
2017/12/19 Javascript
vue-cli+webpack项目 修改项目名称的方法
2018/02/28 Javascript
react-router 路由切换动画的实现示例
2018/12/03 Javascript
[01:22:29]真视界:2019年国际邀请赛总决赛
2020/01/29 DOTA
编程语言Python的发展史
2014/09/26 Python
Python调用C# Com dll组件实战教程
2017/10/12 Python
深入理解Python分布式爬虫原理
2017/11/23 Python
Python不同目录间进行模块调用的实现方法
2019/01/29 Python
如何基于Python实现自动扫雷
2020/01/06 Python
英国家庭家具、照明和花园家具购物网站:Furniture123
2018/12/31 全球购物
泰国排名第一的家居用品中心:HomePro
2020/11/18 全球购物
师范大学毕业自我鉴定
2013/11/21 职场文书
工商局局长个人对照检查材料思想汇报
2014/09/23 职场文书
学生保证书
2015/01/16 职场文书
2016新教师岗前培训心得体会
2016/01/08 职场文书
2016年敬老月活动总结
2016/04/05 职场文书
祝福语集锦:给满月宝宝的祝福语
2019/11/20 职场文书
pyqt5打包成exe可执行文件的方法
2021/05/14 Python
浅谈mysql哪些情况会导致索引失效
2021/11/20 MySQL