this

什么是this

  • 任何函数实质上都是通过某个对象来调用的,如果没有间接指定就是window
  • 所有函数外部都有一个变量this
  • 它的值是调用函数的以后对象

如何确定this的值

  • test():window
  • p.test():p
  • new test(): 新创建的对象
  • p.call(obj):obj
function Person(color){    console.log(this)  this.color = color;  this.getColor = function(){    console.log(this)    return this.color; };  this.setColor = function (color){    console.log(this) this.color = color };}Person("red");    //this是谁    windowvar p = new Person("yello");    //this是谁    pp.getColor();    //this是谁?  pvar obj = {};p.setColor.call(obj,"black");    //this是谁?  objvar test = p.setColor;test();    //this是谁    windowfunction fun1(){    function fun2(){        console.log(this);    }        fun2();    //this是谁?    window}fun1();