this的值是什么?

this是什么

当声明一个函数时,函数会有一个this(指针),声明时this不指向任何对象。当函数被调用时,哪个对象调用了该函数,则该函数的this就指向该对象

  • 当事件驱动时,结果匿名函数的this就指向触发事件的对象

    1
    2
    3
    oDiv.onclick = function(){
    //this --> oDiv
    }
  • 普通命名函数被调用时,函数的this指向全局对象window

    1
    2
    3
    4
    5
    function fn(){
    console.log(this)
    }
    fn(); //window
    // window 是js的全局对象
  • 对象中定义的函数的this就指向该对象

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    var obj={
    name: 'John',
    age:19;
    eat:function(){
    console.log(this)
    }
    }
    obj.eat();// object
    var fnn = obj.eat;
    fnn();// this--> window

this的值是什么?

谁调用函数,函数的this就指向谁

就近原则

1
2
3
4
5
6
7
8
9
10
11
12
13
14
fn()
this => window/global
obj.fn()
this => obj
fn.call(xx)
this => xx
fn.apply(xx)
this => xx
fn.bind(xx)
this => xx
new Fn()
this => 新的对象
fn = ()=> {}
this => 外面的 this