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