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>
posted @ 2021-09-11 17:42  老oo  阅读(65)  评论(0编辑  收藏  举报