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 16 Javascript
基于jquery的大众点评,分类导航实现代码
Aug 23 Javascript
jQuery实现Twitter的自动文字补齐特效
Nov 28 Javascript
js简单抽奖代码
Jan 16 Javascript
深入浅析JavaScript中prototype和proto的关系
Nov 15 Javascript
jQuery滚动新闻实现代码
Jun 26 Javascript
javascript中Date对象应用之简易日历实现
Jul 12 Javascript
老生常谈javascript变量的命名规范和注释
Sep 29 Javascript
AngularJS的Filter的示例详解
Mar 07 Javascript
详解如何实现Element树形控件Tree在懒加载模式下的动态更新
Apr 25 Javascript
ionic4+angular7+cordova上传图片功能的实例代码
Jun 19 Javascript
layui字体图标 loading图标静止不旋转的解决方法
Sep 23 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 URL跳转代码 减少外链
2011/06/25 PHP
php缓冲 output_buffering和ob_start使用介绍
2014/01/30 PHP
php正则去除网页中所有的html,js,css,注释的实现方法
2016/11/03 PHP
PHP自定义序列化接口Serializable用法分析
2017/12/29 PHP
thinkPHP3.2使用RBAC实现权限管理的实现
2019/08/27 PHP
Javascript 文件夹选择框的两种解决方案
2009/07/01 Javascript
Javascript 继承实现例子
2009/08/12 Javascript
javascript DOM编程实例(智播客学习)
2009/11/23 Javascript
JScript分割字符串示例代码
2013/09/04 Javascript
js浮点数保留两位小数点示例代码(四舍五入)
2013/12/26 Javascript
通过JS来判断页面控件是否获取焦点
2014/01/03 Javascript
jQuery实现下拉框选择图片功能实例
2015/08/08 Javascript
原生javascript实现匀速运动动画效果
2016/02/26 Javascript
JavaScript弹出对话框的三种方式
2016/03/23 Javascript
jQuery 3.0十大新特性
2016/07/06 Javascript
Angular 4依赖注入学习教程之ClassProvider的使用(三)
2017/06/04 Javascript
vue中axios请求的封装实例代码
2019/03/23 Javascript
微信小程序服务器日期格式化问题
2020/01/07 Javascript
[04:00]黄浦江畔,再会英雄——完美世界DOTA2 TI9应援视频
2019/07/31 DOTA
python设置检查点简单实现代码
2014/07/01 Python
python代码过长的换行方法
2018/07/19 Python
python使用requests模块实现爬取电影天堂最新电影信息
2019/04/03 Python
Django 创建新App及其常用命令的实现方法
2019/08/04 Python
如何利用python给图片添加半透明水印
2019/09/06 Python
Python开发之基于模板匹配的信用卡数字识别功能
2020/01/13 Python
Python 带星号(* 或 **)的函数参数详解
2021/02/23 Python
英国内衣连锁店:Boux Avenue
2018/01/24 全球购物
Fox Racing官方网站:越野摩托车和山地自行车装备和服装
2019/12/23 全球购物
类如何去实现接口
2013/12/19 面试题
个人自我评价范文
2014/02/05 职场文书
迟到检讨书300字
2014/02/14 职场文书
春节超市活动方案
2014/08/14 职场文书
党员证明模板
2015/06/19 职场文书
个人合作协议范本
2015/08/06 职场文书
应届生们该怎么书写求职信?
2019/07/05 职场文书
Pyqt5将多个类组合在一个界面显示的完整示例
2021/09/04 Python