改变this指向
函数下改变this指向
function fn() {
// console.log(a);
// arguments 参数组
console.log(arguments);
console.log(this);
}
// call(指向的位置,参数1,..., 参数n)
// apply(指向的位置,[参数1,..., 参数n])
// fn.call(document.body, 22)
fn.apply(document.body, [22, 43, 44])
console.log(fn.bind(document.body))
// bind本身不会执行函数,会返回一个新的函数体
// 返回的函数是一个新的函数,bind会将新的函数下的this指向改变
// 和call/apply区别:
// 1.bind是一个方法,执行完毕会返回一个函数;
// 2.call/apply会立即调用函数本身;
// 3.bind返回的是一个新的函数,改变的是新函数下的this指向
fn.bind(document.body)(12, 34, 43)
封装bind简易方法
function example(a) {
console.log(a);
console.log(this);
}
// bind(fn, 指向的位置)
function bind(fn, obj){
return function() {
fn.call(obj, ...arguments);
}
}
bind(example, document.body)(66)