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 相关文章推荐
Javascript 去除数组的重复元素
May 04 Javascript
用Javascript实现Sleep暂停功能代码
Sep 03 Javascript
JavaScript实现url地址自动检测并添加URL链接示例代码
Nov 12 Javascript
jQuery 实现侧边浮动导航菜单效果
Dec 26 Javascript
JavaScript清空数组元素的两种方法简单比较
Jul 10 Javascript
JS中的forEach、$.each、map方法推荐
Apr 05 Javascript
判断数组是否包含某个元素的js函数实现方法
May 19 Javascript
vue使用stompjs实现mqtt消息推送通知
Jun 22 Javascript
Vue 2.0的数据依赖实现原理代码简析
Jul 10 Javascript
简述vue路由打开一个新的窗口的方法
Nov 29 Javascript
vue添加class样式实例讲解
Feb 12 Javascript
Vue2(三)实现子菜单展开收缩,带动画效果实现方法
Apr 28 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
功能齐全的PHP发送邮件类代码附详细说明
2008/07/10 PHP
献给php初学者(入门学习经验谈)
2010/10/12 PHP
php阻止页面后退的方法分享
2014/02/17 PHP
php生成随机字符串可指定纯数字、纯字母或者混合的
2014/04/18 PHP
php+mysql查询优化简单实例
2015/01/13 PHP
php魔术函数__call()用法实例分析
2015/02/13 PHP
php 二维数组时间排序实现代码
2016/11/19 PHP
laravel 判断查询数据库返回值的例子
2019/10/11 PHP
让任务管理器中的CPU跳舞的js代码
2008/11/01 Javascript
表单验证插件Validation应用的实例讲解
2015/10/10 Javascript
js如何获取网页所有图片
2017/05/12 Javascript
Angularjs按需查询实例代码
2017/10/30 Javascript
javaScript字符串工具类StringUtils详解
2017/12/08 Javascript
记一次webpack3升级webpack4的踩坑经历
2018/06/12 Javascript
JavaScript的词法结构精华篇
2018/10/17 Javascript
vue-drawer-layout实现手势滑出菜单栏
2020/11/19 Vue.js
vue前端和Django后端如何查询一定时间段内的数据
2021/02/28 Vue.js
python连接数据库的方法
2017/10/19 Python
python画柱状图--不同颜色并显示数值的方法
2018/12/13 Python
PyQt5的PyQtGraph实践系列3之实时数据更新绘制图形
2019/05/13 Python
python小程序实现刷票功能详解
2019/07/17 Python
pytorch 状态字典:state_dict使用详解
2020/01/17 Python
Python中的X[:,0]、X[:,1]、X[:,:,0]、X[:,:,1]、X[:,m:n]和X[:,:,m:n]
2020/02/13 Python
解决Keras 中加入lambda层无法正常载入模型问题
2020/06/16 Python
哪些是python中web开发框架
2020/06/17 Python
python获取系统内存占用信息的实例方法
2020/07/17 Python
python使用selenium爬虫知乎的方法示例
2020/10/28 Python
html5的canvas元素使用方法介绍(画矩形、画折线、圆形)
2014/04/14 HTML / CSS
碧欧泉美国官网:Biotherm美国
2016/08/31 全球购物
怎么处理XML的中文问题
2015/03/26 面试题
软件测试面试题
2014/01/05 面试题
函授毕业自我鉴定
2013/12/19 职场文书
2014年小学少先队工作总结
2014/12/18 职场文书
环保宣传语大全
2015/07/13 职场文书
2015少先队大队辅导员工作总结
2015/07/24 职场文书
oracle表分区的概念及操作
2021/04/24 Oracle