【js】this问题

demo1:

var obj = {
    a: 10,
    b: () => {
        console.log(this.a); // undefined
        console.log(this); // Window {postMessage: ƒ, blur: ƒ, focus: ƒ, close: ƒ, frames: Window, …}
    },
    c: function () {
        console.log(this.a); // 10
        console.log(this); // {a: 10, b: ƒ, c: ƒ}
    }
}
obj.b();
obj.c();

箭头函数中的this 指的是上下文   ,c中的this值的是调用它的对象

demo2:

var length = 10;
function fn(){
    console.log(this.length);   
}

var obj = {
    length:5,
    method:function(fn){
        fn();
        arguments[0]();
    }   

}
obj.method(fn,1);
// 10 2

 demo3:

var a = 10;
var obj = {
    a:5,
    b:{
        fn:function(){
            console.log(this.a);
        }
    }
}
obj.b.fn();

// undefined   

this 指的是调用它的对象b

原文地址:https://www.cnblogs.com/websmile/p/9805512.html