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())
原文地址:https://www.cnblogs.com/chopin-1990/p/10286416.html