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 版
Mar 24 Javascript
jqPlot 图表中文API使用文档及源码和在线示例
Feb 07 Javascript
jQuery之排序组件的深入解析
Jun 19 Javascript
使用JavaScript进行进制转换将字符串转换为十进制
Sep 21 Javascript
Bootstrap每天必学之导航条
Nov 27 Javascript
javascript检测flash插件是否被禁用的方法
Jan 14 Javascript
AngularJS的脏检查深入分析
Apr 22 Javascript
canvas基础绘制-绚丽倒计时的实例
Sep 17 Javascript
jQuery中ajax获取数据赋值给页面的实例
Dec 31 jQuery
linux 后台运行node服务指令方法
May 23 Javascript
小程序实现列表删除功能
Oct 30 Javascript
vscode中使用npm安装babel的方法
Aug 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
PHP 输出简单动态WAP页面
2009/06/09 PHP
Ajax PHP 边学边练 之三 数据库
2009/11/26 PHP
php explode函数实例代码
2012/02/27 PHP
php获取301跳转URL简单实例
2013/12/16 PHP
使用PHP实现微信摇一摇周边红包
2016/01/04 PHP
Yii2创建控制器(createController)方法详解
2016/07/23 PHP
CentOS7.0下安装PHP5.6.30服务的教程详解
2018/09/29 PHP
在Laravel 中实现是否关注的示例
2019/10/22 PHP
各种效果的jquery ui(接口)介绍
2008/09/17 Javascript
extjs 学习笔记 四 带分页的grid
2009/10/20 Javascript
基于Jquery与WebMethod投票功能实现代码
2011/01/19 Javascript
jquery jqPlot API 中文使用教程(非常强大的图表工具)
2011/08/15 Javascript
a标签的href和onclick 的事件的区别介绍
2013/07/26 Javascript
js动态给table添加/删除tr的方法
2013/08/02 Javascript
jQuery将所有被选中的checkbox某个属性值连接成字符串的方法
2015/01/24 Javascript
js实现的全国省市二级联动下拉选择菜单完整实例
2015/08/17 Javascript
jQuery获得字体颜色16位码的方法
2016/02/20 Javascript
很棒的js Tab选项卡切换效果
2016/08/30 Javascript
javascript设置文本框光标的方法实例小结
2016/11/04 Javascript
jQuery实现select模糊查询(反射机制)
2017/01/14 Javascript
vue用addRoutes实现动态路由的示例
2017/09/15 Javascript
JS删除对象中某一属性案例详解
2020/09/08 Javascript
Python自动连接ssh的方法
2015/03/07 Python
Python实现二叉搜索树
2016/02/03 Python
一键搞定python连接mysql驱动有关问题(windows版本)
2016/04/23 Python
HTML5 图片预加载的示例代码
2020/03/25 HTML / CSS
Petmate品牌官方网站:宠物用品
2018/11/25 全球购物
Moda Italia荷兰:意大利男士服装
2019/08/31 全球购物
工商管理专业实习生自我鉴定
2013/09/29 职场文书
文明风采获奖感言
2014/02/18 职场文书
法院授权委托书范文
2014/08/02 职场文书
2015年父亲节寄语
2015/03/23 职场文书
2015年人民调解工作总结
2015/05/18 职场文书
正规欠条模板
2015/07/03 职场文书
导游词之杭州西湖
2019/09/19 职场文书
最新动漫情报:2022年7月新番定档超过30部, OVERLORD骨王第四季也在其中噢
2022/05/04 日漫