三种定义JavaScript函数方法以及使用匿名函数打造自己的类库
2012-08-03 17:24
731 查看
一、什么是匿名函数?
在Javascript定义一个函数一般有如下三种方式
使用函数语句来定义,语法如下:
使用函数表达式来定义,语法如下:
使用Function类来定义,语法如下:
上面三种定义方法中,第1种就是最常用的方法,后两种都是把一个函数赋值给了一个变量myfunc,而这个函数是没有名字的,即匿名函数。
二、匿名自执行函数
有一种匿名函数定义可以自动执行,这种函数的定义语法如下:
例如:
这段程序返回值是30,也就是两个数的和。
这其实闭包的一种体现,可以利用这种方式来封装自己的函数和变量,从而避免来自多个开发者的多个函数相互冲突,这相当于定义了一个命名空间,来自不同的开发者能位于自己的命名空间。而且这种方式不会污染全局环境,因为外部无法饮用函数内部的变量,因此在执行完后很快就会释放。
那么如何访问匿名自执行函数里的函数呢?
通常是为函数定义个参数,改参数是一个对象,在里面的函数或变量前加上一个对该对象的饮用,这样该函数或变量就成为对象的方法或属性了。
例如:
最常用的对象是将全局对象window作为参数传进去,这样函数或变量就成为全局函数和变量了。很多库函数都是这样来定义的,jQuery整个库定义都位于匿名自执行函数中,并传递window作为参数:
在Javascript定义一个函数一般有如下三种方式
使用函数语句来定义,语法如下:
function myfunc(arg_1,arg_2,...,arg_n){ // 执行一些语句 }
使用函数表达式来定义,语法如下:
var myfunc=function(arg_1,arg_2,...,arg_n){ // 执行一些语句 }
使用Function类来定义,语法如下:
var myfunc=new Function([arg_1,arg_2,...,arg_n],functionBody);
上面三种定义方法中,第1种就是最常用的方法,后两种都是把一个函数赋值给了一个变量myfunc,而这个函数是没有名字的,即匿名函数。
二、匿名自执行函数
有一种匿名函数定义可以自动执行,这种函数的定义语法如下:
(function(arg_1,arg_2,...,arg_n){ // 执行一些语句 })()
例如:
(function(a,b){ alert(a+b); })(10,30)
这段程序返回值是30,也就是两个数的和。
这其实闭包的一种体现,可以利用这种方式来封装自己的函数和变量,从而避免来自多个开发者的多个函数相互冲突,这相当于定义了一个命名空间,来自不同的开发者能位于自己的命名空间。而且这种方式不会污染全局环境,因为外部无法饮用函数内部的变量,因此在执行完后很快就会释放。
那么如何访问匿名自执行函数里的函数呢?
通常是为函数定义个参数,改参数是一个对象,在里面的函数或变量前加上一个对该对象的饮用,这样该函数或变量就成为对象的方法或属性了。
例如:
var o=new Object(); (function(obj){ obj.alert=function(msg){ alert('oseye.net : '+msg); } })(o) o.alert('test'); // 返回oseye.net : test
最常用的对象是将全局对象window作为参数传进去,这样函数或变量就成为全局函数和变量了。很多库函数都是这样来定义的,jQuery整个库定义都位于匿名自执行函数中,并传递window作为参数:
(function(window,undefined){ //jQuery定义 })()
相关文章推荐
- 下拉刷新swipetoloadlayout的使用方法,以及自己定义头部
- 用类名做方法的返回值类型 在学习Java的初始阶段,很多同学使用基本数据类型定义变量和引用类型定义变量以及使用类名做方法的返回值类型常常不知所以。今天我以自己的解读方式和个人的理解作一个简单的解释,和
- delphi 中一种好用的数组定义方法以及函数嵌套的使用源代码
- Laravel中使用自己编写类库的3种方法
- springboot读取自己定义的配置文件的方式以及使用joda_time来处理时间日期
- 接口的定义,使用,以及事件的监听方法
- 使用hadoop命令rcc生成Record 一个简单的方法来实现自己的定义writable对象
- php学习之道:php中soap的使用实例以及生成WSDL文件,提供自己主动生成WSDL文件的类库——SoapDiscovery.class.php类
- Apacheserver自己定义404页面的两种方法以及.htaccess的重要命令总结
- 二维码框架ZBarSDK的使用和自己定义二维码扫描界面方法
- javascript函数 (二 定义函数的三种方法)
- 定义一个公共方法,打造自己的AJAX框架
- JS定义和直接使用匿名函数的三种实现方式
- Objective-C中类和方法的定义以及协议的使用
- Laravel中使用自己编写类库的3种方法
- 在Laravel中使用自己的类库三种方式
- tiny210运行自己的应用程序不能使用触摸屏的解决方法以及原因猜想
- 详解Java类库的概念以及import的使用方法
- java方法的定义以及数组的使用
- android studio开发教程 ListActivity的2种使用方法:系统默认布局和自己定义布局