this 指向

  • 预编译时this指向window,new时this指向函数对象
  • 全局作用域里,this指向window
  • call、apply、bind可改变this指向
  • class里的this指向调用该方法的对象

call, apply, bind

  • 作用:改变this指向
  • 第一个参数都是传 this
  • 第二个参数开始:call 接收一系列单独的变量,apply 必须传一个 arguments 数组,bind 可传独立变量也可传数组
  • call、apply 都是立即执行并返回结果,bind 返回的是一个改变 this 指向的新函数,如果要生效需再次执行一次 ```javascript function test(){}; test(); //与test.call()一样

var person = { name: “sun” }

function printName(a, b) { console.log(this.name, a, b); }

printName.call(person, 1, 2); // nini 1 2 printName.apply(person, [1, 2]); // nini 1 2 apply 必须传一个 arguments 数组 var printN = printName.bind(person, [1, 2]); // bind 返回一个函数 printN(); // nini [1,2] var printN = printName.bind(person, 1, 2); printN(); // nini 1 2 ```