1、示例代码
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8" />
<title>bind函数绑定this指向</title>
</head>
<body>
<script type="text/javascript">
window.color = "red";
var o = {
color: "blue"
};
function sayColor() {
console.log(this.color);
}
sayColor(); //输出:red
//绑定this指向
var objectSayColor = sayColor.bind(o); //this指向o
objectSayColor(); //输出:blue
</script>
</body>
</html>
2、说明
sayColor() 调用 bind() 并传入对象 o ,创建了 o bjectSayColor() 函数。 object-SayColor() 函数的 this 值等于 o ,因此即使是在全局作用域中调用这个函数,也会看到 "blue" 。
3、与call、apply区别
bind与apply、call最大的区别就是:bind不会立即调用,其他两个会立即调用