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不会立即调用,其他两个会立即调用