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不會立即調用,其他兩個會立即調用