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控制frame,iframe的src属性代码
Dec 31 Javascript
js删除所有的cookie的代码
Nov 25 Javascript
Microsfot .NET Framework4.0框架 安装失败的解决方法
Aug 14 Javascript
ECMAScript5(ES5)中bind方法使用小结
May 07 Javascript
在HTML中插入JavaScript代码的示例
Jun 03 Javascript
AngularJS中的Directive自定义一个表格
Jan 25 Javascript
纯JavaScript代码实现文本比较工具
Feb 17 Javascript
第七篇Bootstrap表单布局实例代码详解(三种表单布局)
Jun 21 Javascript
jQuery搜索框效果实现代码(百度关键词联想)
Feb 25 Javascript
利用jQuery异步上传文件的插件用法详解
Jul 19 jQuery
vue2.0实现的tab标签切换效果(内容可自定义)示例
Feb 11 Javascript
详解express使用vue-router的history踩坑
Jun 05 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
简单的过滤字符串中的HTML标记
2006/12/25 PHP
php通过exif_read_data函数获取图片的exif信息
2015/05/21 PHP
PHP正则获取页面所有图片地址
2016/03/23 PHP
PHP unlink与rmdir删除目录及目录下所有文件实例代码
2018/02/07 PHP
基于jquery的动态创建表格的插件
2011/04/05 Javascript
实现点击列表弹出列表索引的两种方式
2013/03/08 Javascript
Jquery为a标签的href赋值实现代码
2013/05/03 Javascript
JavaScript对象之深度克隆介绍
2014/12/08 Javascript
JavaScript 异常处理 详解
2015/02/06 Javascript
举例讲解JavaScript中关于对象操作的相关知识
2015/11/16 Javascript
jQuery Validate初步体验(一)
2015/12/12 Javascript
jquery中关于bind()方法的使用技巧分享
2017/03/30 jQuery
bootstrap table实现双击可编辑、添加、删除行功能
2017/09/27 Javascript
微信小程序之数据缓存的实例详解
2017/09/29 Javascript
详解使用路由延迟加载 Angular 模块
2017/10/12 Javascript
javaScript和jQuery自动加载简单代码实现方法
2017/11/24 jQuery
vue使用Element组件时v-for循环里的表单项验证方法
2018/06/28 Javascript
webpack4 CSS Tree Shaking的使用
2018/09/03 Javascript
JavaScript 中判断变量是否为数字的示例代码
2020/10/22 Javascript
python3.5使用tkinter制作记事本
2016/06/20 Python
Python探索之SocketServer详解
2017/10/28 Python
PyQt5 QSerialPort子线程操作的实现
2018/04/21 Python
深入了解Python在HDA中的应用
2019/09/05 Python
python对文件的操作方法汇总
2020/02/28 Python
椰子猫砂:CatSpot
2018/08/27 全球购物
印尼综合在线预订网站:Tiket.com(机票、酒店、火车、租车和娱乐)
2018/10/11 全球购物
三星法国官方网站:Samsung法国
2019/10/31 全球购物
新加坡鲜花速递/新加坡网上花店:Ferns N Petals
2020/08/29 全球购物
大学生演讲稿范文
2014/01/11 职场文书
工作自我评价怎么写
2014/01/29 职场文书
装修协议书范本
2014/04/21 职场文书
师范生自荐信模板
2014/05/28 职场文书
2014年销售部工作总结
2014/12/01 职场文书
校园文化艺术节开幕词
2016/03/04 职场文书
纪念建国70周年演讲稿
2019/07/19 职场文书
yyds什么意思?90后已经听不懂00后讲话了……
2022/02/03 杂记