Function.prototype.bind实现

//ECMAScript 5 Function.prototype.bind函数兼容处理
(function(){
	if ( !Function.prototype.bind ) {  	//function(){}.bind
		Function.prototype.bind = function ( o, /*参数列表*/ ) {
			var self = this, boundArgs = Array.prototype.slice.call(arguments, 0);
			return function(){
				var args = [], i;
				for ( i = 1; i < boundArgs.length; i++ ) args.push(boundArgs[i]);
				for ( i = 0; i < arguments.length; i++ ) args.push(arguments[i]);
				return this.apply(o, args);
			}
		}
	}
})();

用法示例:

1、简单调用示例:

	/*example 1*/
	function f1(y, z){ return this.x + y + z;}
	//调用 1
	var g1 = f1.bind({x:1}, 2); //this.x = 1; y = 2;
	console.loog( g1(3) );	 	//this.x + y + 3 = 6;
	//调用 2
	var g2 = f1.bind({x:1});	//this.x = 1;
	console.log( g2(2,3) );		//this.x + 2 + 3 = 6
	
	/*example 2*/
	var f2(x, y){ return x + y; }
	//调用
	var g3 = f2.bind(null, 1);  //x = 1
	console.log( g3(2) ); 		//x + 2 = 3

2、DOM调用示例

var eleBtn = document.getElementById("button")
    , eleText = document.getElementById("text");
    
eleBtn.onclick = function(color) {
    color = color || "#003399";
    this.style.color = color; //此时的this指向eleText
}.bind(eleText, "#cd0000");


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值