在JavaScript中有很多改变this指向的方法,如call、apply,本文说的bind也是方法之一,与前两者不同的是,前两者改变this指向的时候会立即执行,而bind不会。
bind是函数原型Function.prototype上的一个方法,作用是改变this的指向并返回一个函数等待执行。
bind可以传入多个参数,第一个参数作为this的一个对象,后面的参数作为返回函数的形参。第一个参数不同,this指向也不同。
1、简单讲解bind函数
/*
*例一:讲解bind函数
* 简单来说:
* 1、函数obj.getValue调用bind的时候,返回一个新的函数newGetValue
* 2、新函数newGetValue和obj.getValue函数体一模一样
* 3、newGetValue函数被调用时的this是指向bind绑定时传入的第一个参数,
* 第一个参数为null、undefined时,this指向window
* 4、bind函数被调用时传递的参数,会在newGetValue被调用时被传递,并且排在实参的最前面
* 5、new newGetValue()时,会把newGetValue当成一个构造函数,this自动被忽略,参数依旧可以传。
*/
/*
var obj = {
value: "123",
getValue: function () {
console.log(this.value);