兼容低版本浏览器的bind方法的代码实现

2015-08-31  本文已影响2695人  洗阳光

高版本的firefox,chrome及ie10以上的浏览器实现了Function.prototype.bind方法,bind方法调用语法为:
functionObj.bind(thisArg[, arg1[, arg2[, ...]]])
使用范例参考如下:

function move(x, y) {
    this.x += x;
    this.y += y;
}
var point = {x:1, y:2};
var pointmove = move.bind(point, 2, 2);
pointmove(); // {x:3, y:4}

但是低版本浏览器中并未提供该方法,请给出兼容低版本浏览器的bind方法的代码实现。

实现思路

 Function.prototype.bind

var _self = this, args = arguments;
return function() {
_self.apply(obj, Array.prototype.slice.call(args, 1));
}

* 所以可得

Function.prototype.bind= function(obj){
var _self = this, args = arguments;
return function() {
_self.apply(obj, Array.prototype.slice.call(args, 1));
}
}

* 在解题的过程中,有些知识点掌握不熟练导致花了很多时间理解,例如原型链,构造函数,构造方法等等,搜寻网上的相关资料,有一个关于prototype的解析不错:[Prototype源码浅析——Function.prototype部分(一)](http://www.cnblogs.com/xesam/archive/2011/12/17/2290797.html)
上一篇 下一篇

猜你喜欢

热点阅读