function, new function, new Function之间的区别


Posted in Javascript onMarch 08, 2007

函数是JavaScript中很重要的一个语言元素,并且提供了一个function关键字和内置对象Function,下面是其可能的用法和它们之间的关系。

    使用方法一: 

 var foo01 = function() //or fun01 = function()  
 {  
     var temp = 100;  
     this.temp = 200;  
     return temp + this.temp;  
 }   alert(typeof(foo01));  
 alert(foo01()); 
   运行结果:
 function
 300    最普通的function使用方式,定一个JavaScript函数。两种写法表现出来的运行效果完全相同,唯一的却别是后一种写法有较高的初始化优先级。在大扩号内的变量作用域中,this指代foo01的所有者,即window对象。

    使用方法二: 
 

var foo02 = new function()  
 {  
     var temp = 100;  
     this.temp = 200;  
     return temp + this.temp;  
 }   alert(typeof(foo02));  
 alert(foo02.constructor());    
运行结果:  object
 300    这是一个比较puzzle的function的使用方式,好像是定一个函数。但是实际上这是定一个JavaScript中的用户自定义对象,不过这里是个匿名类。这个用法和函数本身的使用基本没有任何关系,在大扩号中会构建一个变量作用域,this指代这个作用域本身。

    使用方法三:  

var foo3 = new Function('var temp = 100; this.temp = 200; return temp + this.temp;');   alert(typeof(foo3));  
 alert(foo3());    
运行结果:  function
 300    使用系统内置函数对象来构建一个函数,这和方法一中的第一种方式在效果和初始化优先级上都完全相同,就是函数体以字符串形式给出。

    使用方法四: 
 

var foo4 = Function('var temp = 100; this.temp = 200; return temp + this.temp;');   alert(typeof(foo4));  
 alert(foo4());    
运行结果:
function
300    这个方式是不常使用的,效果和方法三一样,不过不清楚不用new来生成有没有什么副作用,这也体现了JavaScript一个最大的特性:灵活!能省就省。

    关于函数初始化优先级这个问题,可以参看:"JS类定义原型方法的两种实现的区别"的回复。

Javascript 相关文章推荐
js身份证验证超强脚本
Oct 26 Javascript
Jquery AJAX 用于计算点击率(统计)
Jun 30 Javascript
Jquery中dialog属性小记
Sep 03 Javascript
jQuery EasyUI API 中文文档 - ComboTree组合树
Oct 11 Javascript
导航跟随滚动条置顶移动示例代码
Sep 11 Javascript
JavaScript DOM节点添加示例
Jul 16 Javascript
详解jQuery UI库中文本输入自动补全功能的用法
Apr 23 Javascript
实例解析jQuery中proxy()函数的用法
May 24 Javascript
深究AngularJS中ng-drag、ng-drop的用法
Jun 12 Javascript
使用JSON格式提交数据到服务端的实例代码
Apr 01 Javascript
jQuery 动画与停止动画效果实例详解
May 19 jQuery
解决vue安装less报错Failed to compile with 1 errors的问题
Oct 22 Javascript
JavaScript中this关键字使用方法详解
Mar 08 #Javascript
区分JS中的undefined,null,"",0和false
Mar 08 #Javascript
在JavaScript中使用inline函数的问题
Mar 08 #Javascript
JS类中定义原型方法的两种实现的区别
Mar 08 #Javascript
JavaScript语言中的Literal Syntax特性分析
Mar 08 #Javascript
从JavaScript的函数重名看其初始化方式
Mar 08 #Javascript
翻译整理的jQuery使用查询手册
Mar 07 #Javascript
You might like
Smarty变量调节器失效的解决办法
2014/08/20 PHP
php计算title标题相似比的方法
2015/07/29 PHP
PHP目录操作实例总结
2016/09/27 PHP
PHP 进度条函数的简单实例
2017/09/19 PHP
40个有创意的jQuery图片、内容滑动及弹出插件收藏集之一
2011/12/31 Javascript
拥抱模块化的JavaScript
2012/03/07 Javascript
为开发者准备的10款最好的jQuery日历插件
2014/02/04 Javascript
JavaScript Serializer序列化时间处理示例
2014/07/31 Javascript
JavaScript中getUTCSeconds()方法的使用详解
2015/06/11 Javascript
JQuery zClip插件实现复制页面内容到剪贴板
2015/11/02 Javascript
探索angularjs+requirejs全面实现按需加载的套路
2016/02/26 Javascript
JavaScript学习笔记之数组去重
2016/03/23 Javascript
移动端 一个简单易懂的弹出框
2016/07/06 Javascript
vue项目首屏加载时间优化实战
2019/04/23 Javascript
JavaScript中的函数式编程详解
2020/08/22 Javascript
[57:55]EG vs Fnatic 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
详解字典树Trie结构及其Python代码实现
2016/06/03 Python
使用Python生成XML的方法实例
2017/03/21 Python
在django view中给form传入参数的例子
2019/07/19 Python
python安装virtualenv虚拟环境步骤图文详解
2019/09/18 Python
Python缓存技术实现过程详解
2019/09/25 Python
美国网上鞋城:Shoeline.com
2016/11/17 全球购物
世界上最大的餐具公司:Oneida
2016/12/17 全球购物
中国首家奢侈品O2O网购平台:第五大道奢侈品网
2017/12/14 全球购物
物流仓储实习自我鉴定
2013/09/25 职场文书
怎么写好自荐信
2013/10/30 职场文书
文明礼仪事迹材料
2014/01/09 职场文书
市场营销个人求职信范文
2014/02/02 职场文书
专业技术职务聘任书
2014/03/29 职场文书
职务聘任书范文
2014/03/29 职场文书
《翻越远方的大山》教学反思
2014/04/13 职场文书
情况说明书格式范文
2014/05/06 职场文书
结婚保证书
2015/01/16 职场文书
黑暗中的舞者观后感
2015/06/18 职场文书
详解Apache SkyWalking 告警配置指南
2021/04/22 Servers
PHP中strval()函数实例用法
2021/06/07 PHP