扩展一下: function foo(){ setTimeout(() => { console.log("id:", this.id) }, 100); } foo.call({id:42}); 请问,上面代码的{id: 42},到底是箭头函数定义时所在的对象,还是运行时所在的对象? 因为,这个例子中,箭头函数位于foo函数内部。只有foo函数运行后,它才会按照定义生成,所以**foo运行时所在的对象,恰好是箭头函数定义时所在的对象