判断this如何指向

  1.(new绑定)函数是否在new中调用,如果是,this则指向这个心创建的对象本身

  var bar=new foo();     foo的this指向自身;

  2.(显示绑定)函数通过call apply或者bind(this指向,传入的参数),this绑定的是指定的对象
  var bar =foo.call(obj1); //foo的this指向boj1;

  apply直接调用了函数  把 "[]"内的参数转换成了参数

   ### ES6 ### 用"..."来代替 apply() ------------foo(...[1,2,3])

  bind()对函数参数进行了柯里化操作    把多个参数转化成单一参数的函数?(形容不准确)

  3.(隐式绑定)函数是否在某个上下文对象中调用(调用此函数的对象的作用域),如果是,this指向此对象的作用域

  var bar=obj1.foo();    //obj1.foo   foo中的this指向的是obj1      
  ########  bar();  //foo中的this指向的是window
  4.(默认绑定)     严格模式下,绑定到undefined ,否则绑定到全局对象中

  function foo(p1,p2){
    console.log(this.a);
  }
  var obj11={
    a:"666",
    foo:foo
  };
  var a="888";
  obj11.foo();//666
  var bars=obj11.foo;
  bars();//888

原文地址:https://www.cnblogs.com/trend/p/7552203.html