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 学习笔记 错误处理
Jul 30 Javascript
jQuery 瀑布流 绝对定位布局(二)(延迟AJAX加载图片)
May 23 Javascript
jquery动态更换设置背景图的方法
Mar 25 Javascript
基于jquery实现省市区三级联动效果
Dec 25 Javascript
jQuery页面刷新(局部、全部)问题分析
Jan 09 Javascript
详解react使用react-bootstrap当轮子造车
Aug 15 Javascript
对Vue beforeRouteEnter 的next执行时机详解
Aug 25 Javascript
JSON.stringify()方法讲解
Jan 31 Javascript
深入理解react 组件类型及使用场景
Mar 07 Javascript
Angular 多级路由实现登录页面跳转(小白教程)
Nov 19 Javascript
javascript实现视频弹幕效果(两个版本)
Nov 28 Javascript
JS window对象简单操作完整示例
Jan 14 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/04/09 PHP
php mssql 数据库分页SQL语句
2008/12/16 PHP
php 正则匹配函数体
2009/08/25 PHP
php中simplexml_load_string使用实例分享
2014/02/13 PHP
Yii2框架自定义类统一处理url操作示例
2019/05/25 PHP
php+websocket 实现的聊天室功能详解
2020/05/27 PHP
使Ext的Template可以解析二层的json数据的方法
2007/12/22 Javascript
JAVASCRIPT style 中visibility和display之间的区别
2010/01/22 Javascript
Ajax 数据请求的简单分析
2011/04/05 Javascript
了不起的node.js读书笔记之mongodb数据库交互
2014/12/22 Javascript
使用jQuery实现图片遮罩半透明坠落遮挡
2015/03/16 Javascript
微信小程序 教程之WXSS
2016/10/18 Javascript
JS IOS/iPhone的Safari浏览器不兼容Javascript中的Date()问题如何解决
2016/11/11 Javascript
React/Redux应用使用Async/Await的方法
2017/11/16 Javascript
微信小程序使用slider设置数据值及switch开关组件功能【附源码下载】
2017/12/09 Javascript
vue2.0路由切换后页面滚动位置不变BUG的解决方法
2018/03/14 Javascript
浅谈微信JS-SDK 微信分享接口开发(介绍版)
2018/08/15 Javascript
使用JavaScript破解web
2018/09/28 Javascript
javascript中一些奇葩的日期换算方法总结
2018/11/14 Javascript
vue项目前端埋点的实现
2019/03/06 Javascript
Vue2.0实现组件之间数据交互和通信操作示例
2019/05/16 Javascript
nodejs中实现用户注册路由功能
2019/05/20 NodeJs
Jquery属性的获取/设置及样式添加/删除操作技巧分析
2019/12/23 jQuery
[42:50]NB vs VP 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python3实现ftp服务功能(服务端 For Linux)
2017/03/24 Python
python3对接mysql数据库实例详解
2019/04/30 Python
解决pyshp UnicodeDecodeError的问题
2019/12/06 Python
python中return的返回和执行实例
2019/12/24 Python
matplotlib基础绘图命令之imshow的使用
2020/08/13 Python
HTML5对手机页面长按会粘贴复制禁用的解决方法
2016/07/19 HTML / CSS
工地资料员岗位职责
2013/12/31 职场文书
3.15国际消费者权益日主题活动活动总结
2014/03/16 职场文书
第二课堂活动总结
2014/05/07 职场文书
效能风暴心得体会
2014/09/04 职场文书
2014银行领导班子四风对照检查材料思想汇报
2014/09/25 职场文书
《吸血鬼:避世 血猎》官宣4.27发售 系列首款大逃杀
2022/04/03 其他游戏