区别 new function(){} 和 function(){}()
只要 new 表达式之后的 constructor 返回(return)一个引用对象(数组,对象,函数等),都将覆盖new创建的匿名对象,如果返回(return)一个原始类型(无 return 时其实为 return 原始类型 undefined),那么就返回 new 创建的匿名对象。
情景一. new function(){}
var fn = new function() {return "圆心"};
alert(fn); 
我们运行情景一代码,将返回显示“[object object] ”,此时该代码等价于:
function 匿名类(){
    return "圆心";
}
var fn = new 匿名类();
alert(fn);
也等价于:
var Fn = function() {return "圆心"};
var fn = new Fn();
alert(fn);
我们对情景一的代码进行下面改造:
var fn = new function() {return new String("圆心")};
alert(fn);
我们运行,将会发现返回的是“圆心”,这是为什么呢?
只要 new 表达式之后的 constructor 返回(return)一个引用对象(数组,对象,函数等),都将覆盖new创建的匿名对象,如果返回(return)一个原始类型(无 return 时其实为 return 原始类型 undefined),那么就返回 new 创建的匿名对象
由于 new String 会构造一个对象,而不是一个 string 直接量,且new String(x) 如果带参数,那么alert它的时候就会返回 x。所以 fn 将返回 new String(”圆心”) 这个对象,而 alert(fn) 则显示 “圆心”。
情景二. function(){}()
var obj = function() {return "圆心"}();
alert(obj);
我们运行情景二代码,将返回显示“圆心”,此时该代码等价于:
var 匿名函数 = function() {return "圆心"};
var obj = 匿名函数();
alert(obj);
很明显,obj 返回的是匿名函数的执行结果值,即 obj 为:“圆心”。
当然匿名函数的执行结果也可以为一个匿名对象。具体常见应用可以看《Javascript的一种模块模式》
【转载】http://www.jb51.net/article/13895.htm
区别 new function(){} 和 function(){}()的更多相关文章
- 浅析jQuery(function(){})与(function(){})(jQuery)之间的区别
		
本篇文章主要是对jQuery(function(){})与(function(){})(jQuery)之间的区别进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助 Jquery是优秀的Javas ...
 - (function($){}) 和$(function(){}) 和$(function($){}) 区别
		
请问下(function($){}) 和$(function(){}) 和$(function($){}) 有什么区别 谢谢 一.先看 jQuery(function(){ }); 全写为 jQuer ...
 - function foo(){}、(function(){})、(function(){}())等函数区别分析
		
前面一段时间,看到(function(){}),(function(){}())这些函数就犯晕,不知道它到底是什么意思,为什么函数外要加小括号,函数后要加小括号,加和不加到底有什么区别……一直犯迷糊, ...
 - (function ( ){})( ) 与 (function ( ){}( )) 有什么区别?
		
js立即执行函数: (function ( ){})( ) 与 (function ( ){}( )) 有什么区别? 转自:http://www.jb51.net/article/75089.htm ...
 - JavaScript 中,定义函数时用 var foo = function () {} 和 function foo() {}有什么区别?
		
对于新手来说(本人也是新手-_-!),好像var foo = function () {} 和 function foo(){}并没有什么区别,意识里可能就认为就是两种不同的写法而已.但是,通过网上查 ...
 - 从var func=function 和 function func()区别谈Javascript的预解析机制
		
var func=function 和 function func()在意义上没有任何不同,但其解释优先级不同:后者会先于同一语句级的其他语句. 即: { var k = xx(); function ...
 - $.fn与$.fx什么意思; $.extend与$.fn.extend用法区别; $(function(){})和(function(){})(jQuery)
		
$.fn是指jquery的命名空间,加上fn上的方法及属性,会对jquery实例每一个有效. 如扩展$.fn.abc() 那么你可以这样子:$("#div").abc(); 通常使 ...
 - function,new function,Function,new Function 之间的区别
		
测试一: var fud01 = function() { var temp = 100; this.temp = 200; return temp + this.temp; } alert(typ ...
 - jQuery中$(function(){})与(function($){})(jQuery)、$(document).ready(function(){})等的区别详细讲解
		
1.(function($) {…})(jQuery); 1).原理: 这实际上是匿名函数,如下: function(arg){…} 这就定义了一个匿名函数,参数为arg 而调用函数时,是在函数后面写 ...
 - $(document).ready(function (){}) , $(function(){}) , $().ready(function(){}) , jquery(function(){}) , (function($){})(jquery)有什么区别
		
$(document).ready(function(){...}) , $().ready(function(){...}) , $(function(){...}) , jquery(funct ...
 
随机推荐
- h5-全屏插件
			
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
 - jquery鼠标键盘悬停事件,形变动画和淡入淡出
			
鼠标和键盘悬停 <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...
 - UML-架构分析-阶段
			
初始阶段:架构概念验证原型--->确定其可行性 细化阶段:因素表.技术备忘录.SAD(软件架构文档) 移交阶段:可能会修改SAD->确保与最终部署版本的一致性 后续进化循环:重温架构性因素 ...
 - TX2在Turtlebot测试kobuki
			
1.检查TX2开发板上的ROS,输入: $ roscore 如果ROS安装正确显示 started core service [/rosout] 2.输入检测kobuki 命令 ls /dev/kob ...
 - h5-携程页面小案例-伸缩盒子
			
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
 - $_SESSION  $_COOKIE
			
$_SESSION是临时会话变量,用来储存访问者信息.内容是储存在服务器上面的.比如 $_SESSION["ABC"] = "aaa";那么这个用户访问时,$_ ...
 - R语言 批量下载财务报表
			
getsheets <- function(symbol,type,file){ pre="http://money.finance.sina.com.cn/corp/go.php/v ...
 - MySQL-慢日志slow log
			
文件结构 1.目录结构 drwxrwxr-x mysql mysql Mar bin drwxrwxr-x mysql mysql Dec : binlogdir -rw-r--r-- mysql m ...
 - PAT Advanced 1015  Reversible Primes (20) [素数]
			
题目 A reversible prime in any number system is a prime whose "reverse" in that number syste ...
 - 在mybatis框架中,延迟加载与连表查询的差异
			
1.引子 mybatis的延迟加载,主要应用于一个实体类中有复杂数据类型的属性,包括一对一和一对多的关系(在xml中用collection.association标签标识).这个种属性往往还对应着另一 ...