apply、call、bind都是改变要执行函数的this作用域
1、 apply、call类似都是调用直接执行函数主要区别在于传递参数的形式不同。
1.1、call可以多参数传入
var obj = { test: '123' }
function fn() {
console.log(this, arguments);
}
fn.call(obj, ['admin'], 123, 245)
1.2、apply只能通过数组的形式传递参数
var obj = { test: '123' }
function fn() {
console.log(this, arguments);
}
fn.apply(obj, [123])
2、bind 是返回一个新的函数缓存着但不执行而是等到需要的时候才执行
var obj = { test: '123' }
function fn() {
console.log(this, arguments);
}
var b = fn.bind(obj, ['admin'], 123, 456);
console.log(b())
小结:bind、apply、call还可以实现函数的继承等等诸多功能、本文只是做一个简单的入门demo方便理解