功能
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>