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更优雅的兼容
Aug 12 Javascript
Jquery插件之打造自定义的select标签
Nov 30 Javascript
js下拉框二级关联菜单效果代码具体实现
Aug 03 Javascript
jquery获取一个元素下面相同子元素的个数代码
Jul 31 Javascript
如何改进javascript代码的性能
Apr 02 Javascript
jQuery实现分章节锚点“回到顶部”动画特效代码
Oct 23 Javascript
jQuery使用经验小技巧(推荐)
May 31 Javascript
Bootstrap Table从服务器加载数据进行显示的实现方法
Sep 29 Javascript
详解照片瀑布流效果(js,jquery分别实现与知识点总结)
Jan 01 Javascript
jQuery使用ajax方法解析返回的json数据功能示例
Jan 10 Javascript
JavaScript之DOM_动力节点Java学院整理
Jul 03 Javascript
react-router-dom 嵌套路由的实现
May 02 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
ASP知识讲座四
2006/10/09 PHP
PHP中cookies使用指南
2007/03/16 PHP
php设计模式 Decorator(装饰模式)
2011/06/26 PHP
CodeIgniter使用smtp服务发送html邮件的方法
2015/06/10 PHP
php实现的操作excel类详解
2016/01/15 PHP
THINKPHP5分页数据对象处理过程解析
2020/10/28 PHP
JQuery Tab选项卡效果代码改进版
2010/04/01 Javascript
javascript中字符串拼接需注意的问题
2010/07/13 Javascript
js 金额文本框实现代码
2012/02/14 Javascript
jQuery随机切换图片的小例子
2013/04/18 Javascript
JS动态增加删除UL节点LI及相关内容示例
2014/05/21 Javascript
详解vue父子模版嵌套案例
2017/03/04 Javascript
jQuery使用EasyUi实现三级联动下拉框效果
2017/03/08 Javascript
nodeJS服务器的创建和重新启动的实现方法
2018/05/12 NodeJs
Bootstrap标签页(Tab)插件切换echarts不显示问题的解决
2018/07/13 Javascript
nodejs同步调用获取mysql数据时遇到的大坑
2019/03/02 NodeJs
解决vue-cli项目开发运行时内存暴涨卡死电脑问题
2019/10/29 Javascript
el-form 多层级表单的实现示例
2020/09/10 Javascript
Python中AND、OR的一个使用小技巧
2015/02/18 Python
在pycharm中设置显示行数的方法
2019/01/16 Python
使用python写的opencv实时监测和解析二维码和条形码
2019/08/14 Python
python打造爬虫代理池过程解析
2019/08/15 Python
Python 简单计算要求形状面积的实例
2020/01/18 Python
PyQt5实现画布小程序
2020/05/30 Python
Python Tornado核心及相关原理详解
2020/06/24 Python
一款利用html5和css3实现的3D立方体旋转效果教程
2016/04/26 HTML / CSS
P D PAOLA法国官网:西班牙著名的珠宝首饰品牌
2020/02/15 全球购物
EJB2和EJB3在架构上的不同点
2014/09/29 面试题
学校十一活动方案
2014/02/01 职场文书
党课培训主持词
2014/04/01 职场文书
监督检查工作方案
2014/05/28 职场文书
公安局负责人查摆问题及整改方案
2014/09/27 职场文书
公安机关纪律作风整顿剖析
2014/10/10 职场文书
如何书写邀请函?
2019/06/24 职场文书
利用Python+OpenCV三步去除水印
2021/05/28 Python
Python自动化测试PO模型封装过程详解
2021/06/22 Python