js中,call,apply,bind的区别
call、apply 和 bind 的作用都是改变 this 的指向
其中 call 和 apply 的区别在于它们传参的方式不同,call可以传多个形参,而apply只能传一个数组形参。
而bind和call、apply的区别在于bind不会立即调用,而是返回一个函数对象,因此开发中一般用bind比较多
<script type="text/javascript">
var person1 = {
name:'张三',
hobby:function(hobby,color){
console.log(this.name + "喜欢" + hobby +",还喜欢" + color)
}
}
person1.hobby('打篮球','蓝色')
var person2 = {
name:'李四',
}
// call
person1.hobby.call(person2,"踢足球","白色")
// apply
person1.hobby.apply(person2,["踢足球","白色"])
// bind
let result = person1.hobby.bind(person2,"踢足球","白色")
console.log(result)
result()
</script>