bind,call和apply的区别
bind call 和apply都可以改变this指向的 但是call和apply可以自动执行而bind需要手动执行
call可以传多个参数,而apply只能传一个参数就是数组的格式
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
</body>
</html>
<script>
var obj1 = {
name:"obj1",
getName(){
console.log(this.name);
}
}
var obj2 = {
name:"obj2",
getName(){
console.log(this.name);
}
}
// obj1.getName() //obj1
obj1.getName.call(obj2,"aaa","bbb","ccc") //obj2 改变this指向,立即执行方法
// obj1.getName.apply(obj2,["aaa","bbb","ccc"]); //obj2 改变this指向,立即执行方法
// obj1.getName.bind(obj2,"aaa","bbb","ccc")() //改变this指向 ,手动执行方法
// 所以总结如下 bind call 和apply都可以改变this指向的 但是call和apply可以自动执行而bind需要
//手动执行
//而call可以传多个参数,而apply只能传一个参数就是数组的格式
</script>