call()、apply()、bind() 都是用来重定义 this 对象。
1.call 的参数是直接放进去的,第二第三第 n 个参数全都用逗号分隔。
2.apply 的所有参数都必须放在一个数组里面传进去。
3.bind 它 的参数和 call的一样,但是bind 返回的是一个新的函数,你必须调用它才会被执行。
案例:
var demo={
name:'11',
space:'222',
init:function (a,b) {
console.log(a,b)//ss,mmm
return this.name+this.space;
}
};
var obj={
name:'333',
space: '444'
}
//三种方式引用
console.log(demo.init.call(obj,'ss','mmm'))
console.log(demo.init.apply(obj,['ss','mmm']))
console.log(demo.init.bind(obj,'ss','mmm')())
三者的参数不限定是 string 类型,允许是各种类型,包括函数 、 object 等等!