详解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 相关文章推荐
JS实现控制表格行内容垂直对齐的方法
Mar 30 Javascript
jquery判断至少有一个checkbox被选中的方法
Jun 05 Javascript
JavaScript DOM 学习总结(五)
Nov 24 Javascript
jQuery实现form表单基于ajax无刷新提交方法详解
Dec 08 Javascript
js阻止浏览器默认行为的简单实例
May 15 Javascript
jQuery UI Bootstrap是什么?
Jun 17 Javascript
完美解决jQuery符号$与其他javascript 库、框架冲突的问题
Aug 09 Javascript
AngularJS表单提交实例详解
Feb 18 Javascript
简单实现JS上传图片预览功能
Apr 14 Javascript
js原生日历的实例(推荐)
Oct 31 Javascript
使用jQuery给Table动态增加行、清空table的方法
Sep 05 jQuery
微信小程序表单验证插件WxValidate的二次封装功能(终极版)
Sep 03 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编码规范-php coding standard
2007/03/16 PHP
php下关于中英数字混排的字符串分割问题
2010/04/06 PHP
实测在class的function中include的文件中非php的global全局环境
2013/07/15 PHP
浅谈PHP的反射API
2017/02/26 PHP
[原创]php使用strpos判断字符串中数字类型子字符串出错的解决方法
2017/04/01 PHP
推荐40个简单的 jQuery 导航插件和教程(下篇)
2012/09/14 Javascript
jquery中$each()方法的使用指南
2015/04/30 Javascript
12个超实用的JQuery代码片段
2015/11/02 Javascript
教你如何在Node.js中使用jQuery
2016/08/28 Javascript
JavaScript实现二维坐标点排序效果
2017/07/18 Javascript
利用JS制作万年历的方法
2017/08/16 Javascript
JavaScript定义函数的三种实现方法
2017/09/23 Javascript
vue2.0 常用的 UI 库实例讲解
2017/12/12 Javascript
如何实现一个webpack模块解析器
2018/10/24 Javascript
VUE2.0+ElementUI2.0表格el-table实现表头扩展el-tooltip
2018/11/30 Javascript
详解在Node.js中发起HTTP请求的5种方法
2019/01/10 Javascript
零基础之Node.js搭建API服务器的详解
2019/03/08 Javascript
Vue实现Header渐隐渐现效果的实例代码
2020/11/05 Javascript
[54:58]完美世界DOTA2联赛PWL S2 LBZS vs Rebirth 第一场 11.25
2020/11/25 DOTA
python微信跳一跳系列之棋子定位像素遍历
2018/02/26 Python
TensorFlow通过文件名/文件夹名获取标签,并加入队列的实现
2020/02/17 Python
pycharm如何使用anaconda中的各种包(操作步骤)
2020/07/31 Python
Python3 用matplotlib绘制sigmoid函数的案例
2020/12/11 Python
python中编写函数并调用的知识点总结
2021/01/13 Python
pandas数据分组groupby()和统计函数agg()的使用
2021/03/04 Python
html5用video标签流式加载的实现
2020/05/20 HTML / CSS
be2台湾单身男女交友:全球网路婚姻介绍的领导品牌
2019/10/11 全球购物
建筑文秘专业个人求职信范文
2013/12/28 职场文书
环保专业大学生职业规划设计
2014/01/10 职场文书
新闻编辑自荐书范文
2014/02/12 职场文书
中学生英语演讲稿
2014/04/26 职场文书
2014年工人工作总结
2014/11/25 职场文书
优秀党员推荐材料
2014/12/18 职场文书
2016年中秋祝酒词
2015/11/26 职场文书
创业计划书之水果店
2019/07/18 职场文书
CSS实现章节添加自增序号的方法
2021/06/23 HTML / CSS