我正在阅读一本 javascript 书,下面是作者描述的示例:let myObject = { greeting: "Hi, there", getWriter() { return (message) => console.log(`${this.greeting}, ${message}`); }}myObject.getWriter()("It is raining today");当调用 getWriter 返回的箭头函数时,它会在其范围内向上工作,直到找到 this 的值。因此,调用 getWriter 函数的方式决定了箭头函数的 this 值。我有点明白这个想法,但对细节感到困惑,所以getWriter()首先被调用,然后箭头函数被调用,但是箭头函数如何工作到它的范围以确定 this 值是myObject什么?我的意思是什么时候getWriter()被调用,这个函数的作用域在这个函数完成时结束,箭头函数不应该知道它自己是从 getWriter 函数返回的吗?
2 回答
![?](http://img1.sycdn.imooc.com/5458506b0001de5502200220-100-100.jpg)
拉莫斯之舞
TA贡献1820条经验 获得超10个赞
考虑到箭头函数是this
在评估时捕获词法值的表达式,以供稍后调用时使用,这可能会有所帮助。
myObject.getWriter()("It is raining today");
调用getwriter
作为方法myObject
并通过这样做导致在执行期间getwriter
具有 this 值myObject
。
(message) => console.log(`${this.greeting}, ${message}`)
当getwriter
评估该表达(每一次getwriter
被调用)它产生其使用中的箭头函数对象this
由看出值getwriter
。
因此,该函数返回由getwriter
用途this
的价值呼唤到getwriter
,这可能取决于它如何被调用
添加回答
举报
0/150
提交
取消