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 new关键字的玄机 以及其它
Aug 25 Javascript
javascript getElementsByTagName
Jan 31 Javascript
javascript中全局对象的isNaN()方法使用介绍
Dec 19 Javascript
AngularJS基础学习笔记之指令
May 10 Javascript
JavaScript和HTML DOM的区别与联系及Javascript和DOM的关系
Nov 15 Javascript
javascript数组遍历的方法实例分析
Sep 13 Javascript
炫酷的js手风琴效果
Oct 13 Javascript
Bootstrap在线电子商务网站实战项目5
Oct 14 Javascript
vue通过路由实现页面刷新的方法
Jan 25 Javascript
Angular7创建项目、组件、服务以及服务的使用
Feb 19 Javascript
es6 symbol的实现方法示例
Apr 02 Javascript
微信小程序和H5页面间相互跳转代码实例
Sep 19 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 随机记录mysql rand()造成CPU 100%的解决办法
2010/05/18 PHP
PHP 使用MySQL管理Session的回调函数详解
2013/06/21 PHP
PHP unlink与rmdir删除目录及目录下所有文件实例代码
2018/02/07 PHP
jquery插件开发注意事项小结
2013/06/04 Javascript
了不起的node.js读书笔记之node的学习总结
2014/12/22 Javascript
深入浅析NodeJs并发异步的回调处理
2015/12/21 NodeJs
动态加载js文件简单示例
2016/04/21 Javascript
BootStrap select2 动态改变值的方法
2017/02/10 Javascript
JavaScript的for循环中嵌套一个点击事件的问题解决
2017/03/03 Javascript
JS数组搜索之折半搜索实现方法分析
2017/03/27 Javascript
Angular中的$watch、$watchGroup、$watchCollection
2017/06/25 Javascript
Vue实现数字输入框中分割手机号码的示例
2017/10/10 Javascript
详解Axios 如何取消已发送的请求
2018/10/20 Javascript
Node.js 多进程处理CPU密集任务的实现
2019/05/26 Javascript
[02:55]DOTA2英雄基础教程 发条技师
2013/12/04 DOTA
使用Python的Flask框架实现视频的流媒体传输
2015/03/31 Python
简单介绍Python的Django框架加载模版的方式
2015/07/20 Python
python中模块查找的原理与方法详解
2017/08/11 Python
浅析Git版本控制器使用
2017/12/10 Python
基于python的多进程共享变量正确打开方式
2018/04/28 Python
python清除函数占用的内存方法
2018/06/25 Python
Python中矩阵创建和矩阵运算方法
2018/08/04 Python
Python 3.x基于Xml数据的Http请求方法
2018/12/28 Python
Selenium启动Chrome时配置选项详解
2020/03/18 Python
python读取配置文件方式(ini、yaml、xml)
2020/04/09 Python
css3 media 响应式布局的简单实例
2016/08/03 HTML / CSS
会议邀请函范文
2014/01/09 职场文书
婚礼主持词开场白
2014/03/13 职场文书
入职担保书范文
2014/05/21 职场文书
岗位安全生产责任书
2014/07/28 职场文书
踏青活动策划方案
2014/08/19 职场文书
2015年医药代表工作总结
2015/04/25 职场文书
餐饮服务食品安全承诺书
2015/04/29 职场文书
学校元旦晚会开场白
2015/05/29 职场文书
原生Js 实现的简单无缝滚动轮播图的示例代码
2021/05/10 Javascript
关于Nginx中虚拟主机的一些冷门知识小结
2022/03/03 Servers