call,bind,apply的区别

功能

bind\apply\call 都会改变函数调用时this的指向

区别

  • 执行方式:
    apply\call会立即执行该函数,bind是返回绑定this指向后的函数,
  • 参数
    bind\apply\call 第一个参数用于this指向改变后的对象
    apply其余参数使用数组包裹参数,
    bind和call第一个参数用于this指向改变后的对象,其余参数直接传递

示例代码

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>bind,call,apply的区别</title>
</head>
<body>
	<script>
		let obj = {
     
     
			name:"obj中的name",
			print(a,b,c){
     
     
				console.log(this.name,a,b,c)
			}
		}
		window.name = "window中的age";

		obj.print.bind(this,'1','2','3')()
		obj.print.apply(this,[1,2,3])
		obj.print.call(this,'1','2','3')
	</script>
</body>
</html>

打印结果

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_35958891/article/details/107950397