⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 function.md.svn-base

📁 一款开源强大的javascript控件
💻 SVN-BASE
字号:
Native: Function {#Function}
============================

函数(Function)的功能增强

### 另参考:

- [MDC Function][]



Function 方法: create {#Function:create}
------------------------------------------

用于创建闭包函数的基础方法.(下面的其他Function扩展方法都基于本方法)

### 语法:

	var createdFunction = myFunction.create([options]);

### 参数:

1. [options] - (*object*, 可选) 创建闭包函数时的可选项. 如果未指定可选项,则创建一个原函数的副本

#### 可选项: {#Function:create:options}

* bind       - (*object*: 默认为 主调函数自身) "this"所引用的对象
* event      - (*mixed*: 默认为 false) 如果为true, 则函数将作为事件监听器处理(函数第一个参数将传入event对象); 如果设置的是一个类名,则函数第一个将传入一个该类的实例(该类的构造方法中将传入event对象)
* arguments  - (*mixed*: 默认为 标准的arguments) 生成的闭包函数所携带的参数(单个参数或一个数组参数). 如果同时设置了event和arguments,则event作为闭包函数的第一个参数,arguments指定的参数紧随其后
* delay      - (*number*: 默认为 无延迟) 如果设置了该项, 则生成的闭包函数在执行前将产生一个指定毫秒数的延迟, 并返回一个定时器引用
* periodical - (*number*: 默认为 无定时) 如果设置了该项, 则生成的闭包函数将以指定毫秒数的时间间隔反复执行, 并返回一个定时器引用
* attempt    - (*boolean*: 默认为 false) 如果为true, 则闭包函数在生成后将立即尝试执行,如果执行成功,则返回运行结果;否则返回null

### 返回值:

* (*function*) 根据给出可选项而创建的闭包函数

### 示例:

	var myFunction = function(){
		alert("I'm a function. :)");
	};

	var mySimpleFunction = myFunction.create(); //最简单的myFunction的一个副本

	var myAdvancedFunction = myFunction.create({ //这个闭包生成后,将立即开始尝试调用(attemp设为true)
		arguments: [0,1,2,3],
		attempt: true,
		delay: 1000,
		bind: myElement
	});



Function 方法: pass {#Function:pass}
--------------------------------------

返回指定了携带参数和绑定this对象的闭包函数

### 语法:

	var newFunction = myFunction.pass([args[, bind]]);

### 参数:

1. args - (*mixed*, 可选) 传递给闭包函数的参数(如果是多个参数,必须使用数组)
2. bind - (*object*, 可选) 闭包函数中"this"引用的对象

### 返回值:

* (*function*) 生成的闭包函数

### 示例:

	var myFunction = function(){
		var result = 'Passed: ';
		for (var i = 0, l = arguments.length; i < l; i++){
			result += (arguments[i] + ' ');
		}
		return result;
	}
	var myHello = myFunction.pass('hello');
	var myItems = myFunction.pass(['peach', 'apple', 'orange']);

	//执行生成的闭包函数:
	alert(myHello()); //显示 Passed: hello
	alert(myItems()); //显示 Passed: peach apple orange



Function 方法: attempt {#Function:attempt}
--------------------------------------------

尝试执行闭包函数

### 语法:

	var result = myFunction.attempt([args[, bind]]);

### 参数:

1. args - (*mixed*, 可选)  传递给闭包函数的参数(如果是多个参数,必须使用数组)
2. bind - (*object*, 可选) 闭包函数中"this"引用的对象

### 返回值:

* (*mixed*) 执行后的返回结果;如果执行出错,返回null

### 示例:

	var myObject = {
		'cow': 'moo!'
	};

	var myFunction = function(){
		for (var i = 0; i < arguments.length; i++){
			if(!this[arguments[i]]) throw('doh!');
		}
	};
	
	var result = myFunction.attempt(['pig', 'cow'], myObject); //result = false



Function 方法: bind {#Function:bind}
--------------------------------------

重新绑定函数中this所引用的对象

### 语法:

	myFunction.bind([bind[, args[, evt]]]);

### 参数:

1. bind - (*object*, 可选) 函数中"this"引用的对象
2. args - (*mixed*, 可选)  传递给函数的参数(如果是多个参数,必须使用数组)

### 返回值:

* (*function*) 重新绑定后的函数

### 示例:

	function myFunction(){
		//注意: 当前'this'引用的对象是window对象
		//以下的语句在真正使用的时候,必须绑定一个Element对象
		this.setStyle('color', 'red');
	};
	
	var myBoundFunction = myFunction.bind(myElement);  //绑定myElement对象(一个Element实例)
	myBoundFunction(); //myElement的文本颜色变成红色



Function 方法: bindWithEvent {#Function:bindWithEvent}
--------------------------------------------------------

重新绑定函数中this所引用的对象,并向函数参数传递event对象(该方法生成的函数通常用作事件监听函数)

一般和[Element:addEvent][]配合使用

### 语法:

	myFunction.bindWithEvent([bind[, args[, evt]]]);

### 参数:

1. bind - (*object*, 可选) 函数中"this"所引用的对象
2. args - (*mixed*, 可选)  传递给函数的参数(如果是多个参数,必须使用数组)

### 返回值:

* (*function*) 重新绑定后的函数

### 示例:

	function myFunction(e, add){
		//注意: 当前'this'引用的对象是window对象
		//以下的语句在真正使用的时候,必须绑定一个Element对象
		this.setStyle('top', e.client.x + add);
	};
	
	$(myElement).addEvent('click', myFunction.bindWithEvent(myElement, 100);
	
	//当myElement的点击事件触发时, 元素的位置移动到'当前鼠标位置 + 100'处



Function 方法: delay {#Function:delay}
----------------------------------------

延迟执行函数

### 语法:

	var timeoutID = myFunction.delay([delay[, bind[, args]]]);

### 参数:

1. delay - (*number*, 可选) 延迟毫秒数
2. bind - (*object*, 可选)  函数对象中"this"引用的对象
3. args - (*mixed*, 可选)   传递给函数的参数(如果是多个参数,必须使用数组)

### 返回值:

* (*number*) 定时器引用(用于清除这个定时器时使用)

### 示例:

	var myFunction = function(){
		alert('moo! Element id is: ' + this.id); 
	};
	
	//等待50毫秒后执行
	myFunction.delay(50, myElement); //显示: 'moo! Element id is: ... '

	//匿名函数的延迟执行
	function(){ 
		alert('one second later...'); 
	}.delay(1000);


### 另参考:

- [$clear][], [MDC setTimeout][]



Function 方法: periodical {#Function:periodical}
--------------------------------------------------

以指定的间隔反复执行函数. 可使用[$clear][]来停止执行

### 语法:

	var intervalID = myFunction.periodical([period[, bind[, args]]]);

### 参数:

1. period - (*number*, 可选) 间隔毫秒数
2. bind - (*object*, 可选)   函数对象中"this"所引用的对象
3. args - (*mixed*, 可选)    传递给闭包的参数(如果是多个参数,必须使用数组)

### 返回值:

* (*number*) 定时器引用(用于清除这个定时器时使用)

### 示例:

	var Site = { counter: 0 };
	var addCount = function(){ 
		this.counter++; 
	};
	addCount.periodical(1000, Site);


### 另参考:

- [$clear][], [MDC setInterval][]



Function 方法: run {#Function:run}
------------------------------------

根据指定的参数和this绑定来执行函数

### 语法:

	var myFunctionResult = myFunction.run(args[, bind]);

### 参数:

1. args - (*mixed*)        单个参数, 或一个参数数组
2. bind - (*object*, 可选)  函数对象中"this"引用的对象

### 返回值:

* (*mixed*) 函数执行后的返回值

### 示例:

#### 简单执行:

	var myFn = function(a, b, c){
		return a + b + c;
	}
	var myArgs = [1,2,3];
	myFn.run(args); //返回: 6


#### 绑定this执行:

	var myFn = function(a, b, c) {
		return a + b + c + this;
	}
	var myArgs = [1,2,3];
	myFn.run(args, 6); //返回: 12 (绑定后,myFn里的this值为6)



[options]: #Function:create:options
[Element:addEvent]: /Element/Element.Event/#Element:addEvent
[$clear]: /Core/Core/#clear
[MDC Function]: http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:Function
[MDC setInterval]: http://developer.mozilla.org/en/docs/DOM:window.setInterval
[MDC setTimeout]: http://developer.mozilla.org/en/docs/DOM:window.setTimeout

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -