函数绑定
bind() 方法创建一个新的函数,在 bind() 被调用时,这个新函数的 this 被指定为 bind() 的第一个参数,而其余参数将作为新函数的参数,供调用时使用。
var slice = Array.prototype.slice;
Function.prototype.bind = function() {
var thatFunc = this, thatArg = arguments[0];
var args = slice.call(arguments, 1);
if (typeof thatFunc !== 'function') {
// closest thing possible to the ECMAScript 5
// internal IsCallable function
throw new TypeError('Function.prototype.bind - ' +
'what is trying to be bound is not callable');
}
return function(){
var funcArgs = args.concat(slice.call(arguments))
return thatFunc.apply(thatArg, funcArgs);
};
};
function _bind (fn, context) {
return function() {
return fn.apply(context,argument)
}
}
function _bind(fn, context) {
var args = Array.prototype.slice.call(argument, 2)
return function () {
let args2 = Array.prototype.slice.call(arguments)
fn.apply(context, args.contact(args))
}
}
创建一个新函数 可以在特定的环境中以指定参数调用另一个函数
var handler = {
name: 'shuang',
handler: function () {
console.log('i am ' + this.name)
}
}
const unboundGetX = handler.handler;
console.log(unboundGetX());
貌似应该显式 ‘双’ 实质上显示undefined 这个就是this指向的问题了 this当前指向的执行环境是