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 相关文章推荐
jQuery 翻牌或百叶窗效果(内容三秒自动切换)
Jun 14 Javascript
AngularJS快速入门
Apr 02 Javascript
JS基于cookie实现来宾统计记录访客信息的方法
Aug 04 Javascript
js实现table添加行tr、删除行tr、清空行tr的简单实例
Oct 15 Javascript
原生js实现addclass,removeclass,toggleclasss实例
Nov 24 Javascript
详解angularJS自定义指令间的相互交互
Jul 05 Javascript
JavaScript实现计算圆周率到小数点后100位的方法示例
May 08 Javascript
JavaScript 点击触发复制功能实例详解
Nov 02 Javascript
js实现全选反选不选功能代码详解
Apr 24 Javascript
jQuery创建折叠式菜单
Jun 15 jQuery
实例讲解React 组件
Jul 07 Javascript
详解微信小程序「渲染层网络层错误」的解决方法
Jan 06 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
如何用C语言编写PHP扩展的详解
2013/06/13 PHP
yii实现级联下拉菜单的方法
2014/07/31 PHP
PHP导出带样式的Excel示例代码
2016/08/28 PHP
php使用CURL模拟GET与POST向微信接口提交及获取数据的方法
2016/09/23 PHP
PHP模型Model类封装数据库操作示例
2019/03/14 PHP
yii框架结合charjs统计上一年与当前年数据的方法示例
2020/04/04 PHP
IE6浏览器下resize事件被执行了多次解决方法
2012/12/11 Javascript
js拦截alert对话框另类应用
2013/01/16 Javascript
Jquery ui datepicker设置日期范围,如只能隔3天【实现代码】
2016/05/04 Javascript
js实现数组去重方法及效率?Ρ? target=
2017/02/14 Javascript
js实现延迟加载的几种方法
2017/04/24 Javascript
BootStrap selectpicker后台动态绑定数据
2017/06/01 Javascript
JavaScript ES6中const、let与var的对比详解
2017/06/18 Javascript
canvas+gif.js打造自己的数字雨头像的示例代码
2017/10/26 Javascript
angularJs利用$scope处理升降序的方法
2018/10/08 Javascript
js中innerText/textContent和innerHTML与target和currentTarget的区别
2019/01/21 Javascript
Vue项目实现简单的权限控制管理功能
2019/07/17 Javascript
Vue实现将数据库中带html标签的内容输出(原始HTML(Raw HTML))
2019/10/28 Javascript
vue实现跳转接口push 转场动画示例
2019/11/01 Javascript
[05:42]DOTA2英雄梦之声_第10期_蝙蝠骑士
2014/06/21 DOTA
[04:15]DOTA2-DPC中国联赛 正赛 Ehome vs Aster 选手采访
2021/03/11 DOTA
Python字符串中查找子串小技巧
2015/04/10 Python
python动态参数用法实例分析
2015/05/25 Python
Python的自动化部署模块Fabric的安装及使用指南
2016/01/19 Python
Python装饰器限制函数运行时间超时则退出执行
2019/04/09 Python
python退出循环的方法
2020/06/18 Python
Python数据可视化实现漏斗图过程图解
2020/07/20 Python
Pytest测试框架基本使用方法详解
2020/11/25 Python
HTML5 Canvas——用路径描画线条实例介绍
2013/06/09 HTML / CSS
Gap工厂店:Gap Factory
2017/11/02 全球购物
Bonami斯洛伐克:购买家具和家居饰品
2019/07/02 全球购物
面向对象编程是如何提高软件开发水平的
2014/05/06 面试题
保护环境倡议书300字
2014/05/19 职场文书
英语教师求职信
2014/06/16 职场文书
班级课外活动总结
2014/07/09 职场文书
学校2016年全国助残日活动总结
2016/04/01 职场文书