1 call、apply
- 通过call或者apply绑定this对象
- 显示绑定后,this就会明确的指向绑定的对象
- 第一个参数是相同的,后面的参数,apply为数组,call为参数列表;
// 通过call或者apply绑定this对象
// 显示绑定后,this就会明确的指向绑定的对象
function foo(num1, num2) {
console.log(this)
console.log(num1 + num2)
}
foo.call(window)
foo.call(123)
foo.call({
name: "why"
}, 1, 5)
foo.apply({
name: "why"
}, [1, 3])
2 bind函数
-
bind函数与apply和call的区别
- bind函数 返回的是一个新函数,需要去调用
- apply和call是立即去调用
使用Function.prototype.bind
function foo1() {
console.log(this)
}
var obj = {
name: 'za'
}
//返回的是一个新函数,要调用
var bar = foo1.bind(obj)
bar()
手动写了一个bind的辅助函数(以下foo1,obj传参直接使用上面)
function bind(func, obj) {
return function () {
return func.apply(obj, arguments)
}
}
var bind1 = bind(foo1, obj)
bind1()