详解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 cookie插件代码类
May 26 Javascript
常用一些Javascript判断函数
Aug 14 Javascript
jquery入门—编写一个导航条(可伸缩)
Jan 07 Javascript
Javascript表格翻页效果的具体实现
Oct 05 Javascript
javascript编写简易计算器
May 06 Javascript
jQuery+ajax实现修改密码验证功能实例详解
Jul 06 jQuery
VUE2.0+ElementUI2.0表格el-table实现表头扩展el-tooltip
Nov 30 Javascript
JavaScript创建防篡改对象的方法分析
Dec 30 Javascript
vue中动态select的使用方法示例
Oct 28 Javascript
Quasar Input:type="number" 去掉上下小箭头 实现加减按钮样式功能
Apr 09 Javascript
如何基于jQuery实现五角星评分
Sep 02 jQuery
JavaScript中的LHS和RHS分析详情
Apr 06 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 什么是PEAR?
2009/03/19 PHP
8个必备的PHP功能实例代码
2013/10/27 PHP
php实现websocket实时消息推送
2018/03/30 PHP
jQuery输入城市查看地图使用介绍
2013/05/08 Javascript
JavaScript代码简单实现求杨辉三角给定行的最大值
2013/10/29 Javascript
JS实现距离上次刷新已过多少秒示例
2014/05/23 Javascript
js获取浏览器基本信息大全
2014/11/27 Javascript
js绘制圆形和矩形的方法
2015/08/05 Javascript
详解AngularJS中$http缓存以及处理多个$http请求的方法
2016/02/06 Javascript
获取阴历(农历)和当前日期的js代码
2016/02/15 Javascript
Bootstrap表格和栅格分页实例详解
2016/05/20 Javascript
JavaScript九九乘法口诀表的简单实现
2016/10/04 Javascript
Angular 4.X开发实践中的踩坑小结
2017/07/04 Javascript
JavaScript截屏功能的实现代码
2017/07/28 Javascript
使用taro开发微信小程序遇到的坑总结
2019/04/08 Javascript
d3.js实现图形拖拽
2019/12/19 Javascript
[01:21:58]守擂赛DOTA2第一周决赛
2020/04/22 DOTA
Python递归遍历列表及输出的实现方法
2015/05/19 Python
Python 爬虫学习笔记之正则表达式
2016/09/21 Python
Python实现MySQL操作的方法小结【安装,连接,增删改查等】
2017/07/12 Python
Python的numpy库下的几个小函数的用法(小结)
2019/07/12 Python
python网络编程之多线程同时接受和发送
2019/09/03 Python
Python操作SQLite/MySQL/LMDB数据库的方法
2019/11/07 Python
Pycharm2020.1安装中文语言插件的详细教程(不需要汉化)
2020/08/07 Python
谈一谈HTML5本地存储技术
2016/03/02 HTML / CSS
鼠标滚轮事件和Mac触控板双指事件
2019/12/23 HTML / CSS
Zooplus葡萄牙:欧洲领先的网上宠物商店
2018/07/01 全球购物
自我鉴定范文
2013/11/10 职场文书
回门宴答谢词
2014/01/13 职场文书
个人简历自我评价范文
2014/02/04 职场文书
毕业晚会主持词
2014/03/24 职场文书
敬老模范事迹
2014/05/21 职场文书
基层党组织建设整改方案
2014/09/16 职场文书
超市收银员岗位职责
2015/04/07 职场文书
mysql 如何获取两个集合的交集/差集/并集
2021/06/08 MySQL
剑指Offer之Java算法习题精讲二叉树的构造和遍历
2022/03/21 Java/Android