【js】this问题

时间:2021-08-14 17:04:11

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); //
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