js中.bind()和.call()用法讲解
var option = { ti : 8, it(){ return this.ti; } }
这里又一个option对象,it()方法里的this指的就是option对象的上下文。
console.log(option.it());
直接输出option.it()可以打印出8,option对象作为全局变量可以直接调用;
那我如果只想用option里的it()方法呢,如这样:
var option = { ti : 8, it(){ return this.ti; } } var option2 ={ ti :7 } var nb = option.it.call(this.option);//call里的this>wiondow对象 var nb2 = option.it.call(option2); console.log(nb);//8 console.log(nb2);//7 console.log(option.it());//8
nb2这个对象,将option里的this指向了option2,所以this.ti相当于option2.ti;
bind和call用法差不多,call返回的是对象,bind返回的是一个函数。如果var bn2 = option.ti.bind(option2);那么在调用的时候就要
console.log(nb2())
console.log(nb2())