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