详解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 相关文章推荐
struts2 jquery 打造无限层次的树
Oct 23 Javascript
自定义jQuery选项卡插件实例
Mar 27 Javascript
js实现鼠标经过时图片滚动停止的方法
Feb 16 Javascript
详解JavaScript操作HTML DOM的基本方式
Oct 21 Javascript
js 截取或者替换字符串中的数字实现方法
Jun 13 Javascript
JS实现兼容各种浏览器的高级拖动方法完整实例【测试可用】
Jun 21 Javascript
JavaScript动态添加css样式和script标签
Jul 19 Javascript
最全面的JS倒计时代码
Sep 17 Javascript
微信小程序 倒计时组件实现代码
Oct 24 Javascript
React Native之TextInput组件解析示例
Aug 22 Javascript
Koa 中的错误处理解析
Apr 09 Javascript
详解微信小程序-canvas绘制文字实现自动换行
Apr 26 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之变量、常量学习笔记
2008/03/27 PHP
一个php Mysql类 可以参考学习熟悉下
2009/06/21 PHP
Windows中使用计划任务自动执行PHP程序实例
2014/05/09 PHP
PHP合并静态文件详解
2014/11/14 PHP
Yii框架日志记录Logging操作示例
2018/07/12 PHP
基于jQuery实现网页进度显示插件
2015/03/04 Javascript
基于Jquery easyui 选中特定的tab
2015/11/17 Javascript
jQuery简单验证上传文件大小及类型的方法
2016/06/02 Javascript
基于jquery插件编写countdown计时器
2016/06/12 Javascript
JavaScript-html标题滚动效果的简单实现
2016/09/08 Javascript
JavaScript 随机验证码的生成实例代码
2016/09/22 Javascript
bootstrap table复杂操作代码
2016/11/01 Javascript
详解js的异步编程技术的方法
2017/02/09 Javascript
jQuery获取单选按钮radio选中值与去除所有radio选中状态的方法
2017/05/20 jQuery
微信小程序-getUserInfo回调的实例详解
2017/10/27 Javascript
深入理解vuex2.0 之 modules
2017/11/20 Javascript
微信小程序上传图片并等比列压缩到指定大小的实例代码
2019/10/24 Javascript
微信小程序实现滑动翻页效果(完整代码)
2019/12/06 Javascript
让python的Cookie.py模块支持冒号做key的方法
2010/12/28 Python
python fabric实现远程操作和部署示例
2014/03/25 Python
pyinstaller打包单文件时--uac-admin选项不起作用怎么办
2020/04/15 Python
500行python代码实现飞机大战
2020/04/24 Python
深入了解Python 方法之类方法 & 静态方法
2020/08/17 Python
Python模拟登录requests.Session应用详解
2020/11/17 Python
关于iframe跨域使用postMessage的实现
2019/10/29 HTML / CSS
美国最顶级的精品店之一:Hampden Clothing
2016/12/22 全球购物
高中生毕业自我鉴定范文
2013/12/22 职场文书
检举信的格式及范文
2014/04/04 职场文书
首席执行官观后感
2015/06/03 职场文书
婚庆主持词大全
2015/06/30 职场文书
2020年元旦晚会策划书模板
2019/12/30 职场文书
Python自然语言处理之切分算法详解
2021/04/25 Python
python numpy中multiply与*及matul 的区别说明
2021/05/26 Python
python中__slots__节约内存的具体做法
2021/07/04 Python
win10此电脑打不开怎么办 win10双击此电脑无响应的解决办法
2022/07/23 数码科技
Java Spring读取和存储详细操作
2022/08/05 Java/Android