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入门教程(7) History历史对象
Jan 31 Javascript
jquery 简单图片导航插件jquery.imgNav.js
Mar 17 Javascript
根据一段代码浅谈Javascript闭包
Dec 14 Javascript
Javasipt:操作radio标签详解
Dec 30 Javascript
JavaScript中数组去除重复的三种方法
Apr 22 Javascript
React Native之prop-types进行属性确认详解
Dec 19 Javascript
基于Vue实现平滑过渡的拖拽排序功能
Jun 12 Javascript
jquery html添加元素/删除元素操作实例详解
May 20 jQuery
vue动画—通过钩子函数实现半场动画操作
Aug 09 Javascript
基于vue.js仿淘宝收货地址并设置默认地址的案例分析
Aug 20 Javascript
在vue中使用vant TreeSelect分类选择组件操作
Nov 02 Javascript
基于vue-simple-uploader封装文件分片上传、秒传及断点续传的全局上传插件功能
Feb 23 Vue.js
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
模拟SQLSERVER的两个函数:dateadd(),datediff()
2006/10/09 PHP
又一个php 分页类实现代码
2009/12/03 PHP
php 字符串压缩方法比较示例
2014/01/23 PHP
PHP中两个float(浮点数)比较实例分析
2015/09/27 PHP
PHP日志LOG类定义与用法示例
2018/09/06 PHP
JavaScript 的方法重载效果
2009/08/07 Javascript
javascript 词法作用域和闭包分析说明
2010/08/12 Javascript
javaScript矢量图表库-gRaphael几行代码实现精美的条形图/饼图/点图/曲线图
2013/01/09 Javascript
jquery 获取 outerHtml 包含当前节点本身的代码
2014/10/30 Javascript
JQuery实现的按钮倒计时效果
2015/12/23 Javascript
jQuery EasyUi实战教程之布局篇
2016/01/26 Javascript
使用Script元素发送JSONP请求的方法
2016/06/12 Javascript
关于vue.js弹窗组件的知识点总结
2016/09/11 Javascript
Bootstrap表单控件使用方法详解
2017/01/11 Javascript
Angular JS 生成动态二维码的方法
2017/02/23 Javascript
ES6生成器用法实例分析
2017/04/10 Javascript
js实现canvas保存图片为png格式并下载到本地的方法
2017/08/31 Javascript
在Vue中使用Compass的方法
2018/03/02 Javascript
微信小程序实现人脸识别登陆的示例代码
2019/04/02 Javascript
解决vant中 tab栏遇到的坑 van-tabs
2020/11/04 Javascript
[13:39]2014 DOTA2华西杯精英邀请赛 5 25 NewBee VS DK第一场
2014/05/26 DOTA
浅谈django orm 优化
2018/08/18 Python
PyTorch使用cpu加载模型运算方式
2020/01/13 Python
python将unicode和str互相转化的实现
2020/05/11 Python
python与c语言的语法有哪些不一样的
2020/09/13 Python
详解Python中的Lock和Rlock
2021/01/26 Python
La Redoute英国官网:法国时尚品牌
2017/04/27 全球购物
Superdry瑞典官网:英国日本街头风品牌
2017/05/17 全球购物
个人融资协议书
2014/10/02 职场文书
幼儿园园长新年寄语2015
2014/12/08 职场文书
毕业实习指导教师评语
2014/12/31 职场文书
怎样写观后感
2015/06/19 职场文书
婚宴新郎致辞
2015/07/28 职场文书
公司员工离职感言
2015/08/03 职场文书
Python+Tkinter打造签名设计工具
2022/04/01 Python
Python爬虫网络请求之代理服务器和动态Cookies
2022/04/12 Python