call()方法
call() 方法可以有无数个参数
第一个参数是改变 this 指向的对象
后面的参数直接传递给函数的自身
使用后会自动执行
var a = {
name: '张三'
}
var b = {
name: '李四',
sayName: function (a,b,c) {
console.log(this.name, a+b+c)
}
}
b.sayName.call(a, 1,2,3)//张三 6
apply()方法
apply() 方法只能由两个参数
第一个参数是改变 this 指向的对象
第二个参数必须是一个数组
使用后会自动执行
javascript
var a = {
name: '张三'
}
var b = {
name: '李四',
sayName: function (a,b,c) {
console.log(this.name, a+b+c)
}
}
var arr=[3,5,7]
b.sayName.apply(a, arr)//张三 15
bind()方法
bind() 方法可以有无数个参数
第一个参数是改变 this 指向的对象
后面的参数直接传递给函数的自身
使用后不会自动执行,会返回一个新函数
var a = {
name: '张三'
}
var b = {
name: '李四',
sayName: function (a,b,c) {
console.log(this.name, a+b+c)
}
}
var c=b.sayName.bind(a, 1,2,3)
c();//张三 6
共同点:
第一个参数都为改变this指向的对象
在非严格模式下,若第一参数为null/undefined
,this默认指向window
在严格模式下,若第一参数为null/undefined
,this默认指向undefined