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 颜色选择器(兼容firefox)
Mar 05 Javascript
Javascript 键盘keyCode键码值表
Dec 24 Javascript
javascript与webservice的通信实现代码
Dec 25 Javascript
ExtJs默认的字体大小改变的几种方法(自己整理)
Apr 18 Javascript
基于JS实现导航条之调用网页助手小精灵的方法
Jun 17 Javascript
BootStrap中Table分页插件使用详解
Oct 09 Javascript
Boostrap栅格系统与自己额外定义的媒体查询的冲突问题
Feb 19 Javascript
Vuejs入门教程之Vue生命周期,数据,手动挂载,指令,过滤器
Apr 19 Javascript
jquery实现简单实用的轮播器
May 23 jQuery
Three.js利用Detector.js插件如何实现兼容性检测详解
Sep 26 Javascript
Vue父子组建的简单通信之控制开关Switch的实现
Jun 04 Javascript
vue中改变滚动条样式的方法
Mar 03 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
我的论坛源代码(十)
2006/10/09 PHP
php 输出双引号"与单引号'的方法
2010/05/09 PHP
PHP return语句的另一个作用
2014/07/30 PHP
PHP+原生态ajax实现的省市联动功能详解
2017/08/15 PHP
JavaScript面向对象之体会[总结]
2008/11/13 Javascript
Jquery Ajax学习实例6 向WebService发出请求,返回DataSet(XML) 异步调用
2010/03/18 Javascript
Javascript变量函数浅析
2011/09/02 Javascript
动态加载iframe时get请求传递中文参数乱码解决方法
2014/05/07 Javascript
使用AngularJS 跨站请求如何解决jsonp请求问题
2017/01/16 Javascript
nodejs使用http模块发送get与post请求的方法示例
2018/01/08 NodeJs
微信小程序控制台提示warning:Now you can provide attr "wx:key" for a "wx:for" to improve performance解决方法
2019/02/21 Javascript
vue-week-picker实现支持按周切换的日历
2019/06/26 Javascript
基于vue+uniapp直播项目实现uni-app仿抖音/陌陌直播室功能
2019/11/12 Javascript
使用原生JS实现火锅点餐小程序(面向对象思想)
2019/12/10 Javascript
JavaScript中交换值的10种方法总结
2020/08/18 Javascript
Python基于有道实现英汉字典功能
2015/07/25 Python
python输出100以内的质数与合数实例代码
2018/07/08 Python
Python3爬虫学习之将爬取的信息保存到本地的方法详解
2018/12/12 Python
python图片二值化提高识别率代码实例
2019/08/24 Python
Python计算机视觉里的IOU计算实例
2020/01/17 Python
python-sys.stdout作为默认函数参数的实现
2020/02/21 Python
详解Python 实现 ZeroMQ 的三种基本工作模式
2020/03/24 Python
python在一个范围内取随机数的简单实例
2020/08/16 Python
使用CSS3创建动态菜单效果
2015/07/10 HTML / CSS
美国生日蛋糕店:Bake Me A Wish!
2017/02/08 全球购物
Android面试宝典
2013/08/06 面试题
初中体育教学反思
2014/01/14 职场文书
物理系毕业生自荐书范文
2014/02/22 职场文书
毕业生自荐信格式
2014/03/07 职场文书
养生餐厅创业计划书范文
2014/03/26 职场文书
护理专科毕业自荐信范文
2014/04/21 职场文书
公务员群众路线专题民主生活会发言材料
2014/09/17 职场文书
2015年部门工作总结范文
2015/03/31 职场文书
初二英语教学反思
2016/02/15 职场文书
JavaScript 反射学习技巧
2021/10/16 Javascript
html用代码制作虚线框怎么做? dw制作虚线圆圈的技巧
2022/12/24 HTML / CSS