详解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 相关文章推荐
juqery 学习之三 选择器 子元素与表单
Nov 25 Javascript
基于Jquery的开发个代阴影的对话框效果代码
Jul 28 Javascript
JavaScript二维数组实现的省市联动菜单
May 08 Javascript
JavaScript中的闭包介绍
Mar 15 Javascript
使用Javascript实现选择下拉菜单互移并排序
Feb 23 Javascript
JS仿百度自动下拉框模糊匹配提示
Jul 25 Javascript
详解微信小程序开发之下拉刷新 上拉加载
Nov 24 Javascript
微信小程序中做用户登录与登录态维护的实现详解
May 17 Javascript
详解如何用webpack打包一个网站应用项目
Jul 12 Javascript
layer.js之回调销毁对话框的例子
Sep 11 Javascript
javascript History对象原理解析
Feb 17 Javascript
vue实现滑动解锁功能
Mar 03 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
提高define性能的php扩展hidef的安装和使用
2011/06/14 PHP
详解php的魔术方法__get()和__set()使用介绍
2012/09/19 PHP
php 目录遍历、删除 函数的使用介绍
2013/04/28 PHP
php中sprintf与printf函数用法区别解析
2014/02/17 PHP
php不写闭合标签的好处
2014/03/04 PHP
关于PHP转换超过2038年日期出错的问题解决
2017/06/28 PHP
JQuery下关于$.Ready()的分析
2009/12/13 Javascript
Javascript跨域请求的4种解决方式
2013/03/17 Javascript
css transform 3D幻灯片特效实现步骤解读
2013/03/27 Javascript
JS 获取浏览器和屏幕宽高等信息代码
2014/03/31 Javascript
node.js学习总结之调式代码的方法
2014/06/25 Javascript
jQuery中index()方法用法实例
2014/12/27 Javascript
JS/Jquery判断对象为空的方法
2015/06/11 Javascript
jQuery实现标题有打字效果的焦点图代码
2015/11/16 Javascript
JS中frameset框架弹出层实例代码
2016/04/01 Javascript
javascript超过容器后显示省略号效果的方法(兼容一行或者多行)
2016/07/14 Javascript
在ABP框架中使用BootstrapTable组件的方法
2017/07/31 Javascript
详解可以用在VS Code中的正则表达式小技巧
2019/05/14 Javascript
vue-test-utils初使用详解
2019/05/23 Javascript
vue+element tabs选项卡分页效果
2020/06/29 Javascript
vue 如何使用递归组件
2020/10/23 Javascript
python实现自动发送报警监控邮件
2018/06/21 Python
python 通过SSHTunnelForwarder隧道连接redis的方法
2019/02/19 Python
Python字符编码转码之GBK,UTF8互转
2020/02/09 Python
苹果台湾官网:Apple台湾
2019/01/05 全球购物
澳大利亚波西米亚风情网上商店:Czarina
2019/03/18 全球购物
欧姆龙医疗保健与医疗产品:Omron Healthcare
2020/02/10 全球购物
生产现场工艺工程师岗位职责
2013/11/28 职场文书
美发活动策划书
2014/01/14 职场文书
计算机学生求职信范文
2014/01/30 职场文书
代收款委托书范本
2014/10/01 职场文书
二年级上册数学教学计划
2015/01/20 职场文书
2015年酒店工作总结
2015/04/28 职场文书
爱心捐助活动总结
2015/05/09 职场文书
python 爬取吉首大学网站成绩单
2021/06/02 Python
解决pycharm下载库时出现Failed to install package的问题
2021/09/04 Python