天天看點

Function原型上的方法-bind()實作原理(Function.prototype.bind)

//=>JS中把基于閉包預先處理事情的思想叫做:柯理化函數思想(展現了閉包的儲存作用)
Function.prototype.myBind = function myBind(context) {
    //=>this:fn也就是我們需要處理的函數
    var _this = this,
        outerAry = [].slice.call(arguments, 1);//=>擷取除了第一項CONTEXT之外其餘傳遞進來的值
    return function () {
        //=>裡層函數在調用的時候,可以會被傳遞一些值,例如:事件對象
        var innerAry = [].slice.call(arguments, 0);
        _this.apply(context, outerAry.concat(innerAry));
    }
};
// setTimeout(fn.myBind(obj, 10, 20), 1000);
document.body.onclick = fn.myBind(obj, 10, 20);      

繼續閱讀