【发布时间】:2020-02-11 05:36:41
【问题描述】:
我试图弄清楚 Javascript 中任何新关键字的工作是如何实现的。
例如ES6,箭头函数不能用作带有 new 关键字的构造函数。此外,箭头函数不存在原型属性。 我知道它们与词汇 this 绑定。这与我们普通的构造函数不同。
那么我们的浏览器是如何理解箭头函数的。 如何理解箭头函数的底层工作原理。
如何向 JavaScript 添加新功能以及浏览器如何理解它?
【问题讨论】:
-
Javascript 引擎是为专门解析和运行给定语言规范而构建的代码体。当向规范中添加新功能(例如箭头函数)时,JS 引擎必须添加新代码以支持该新功能。在箭头函数的情况下,他们必须修改解析器,并且必须创建一种新类型的函数,该函数的行为与常规函数对象有些不同。它带有一个
this绑定,该绑定是在当时从当前词法环境声明函数时设置的,而不是通过调用它的方式设置的.. -
要实现理解一种语言的语言引擎(例如浏览器),您需要用另一种语言编写该语言引擎。例如 Google Chrome 及其 V8 JS 引擎是用 C++ 编写的。所以要将箭头函数JS lang特性添加到V8引擎,需要添加一些C++代码。浏览器需要更新到较新的版本才能了解新的语言功能。
-
非常感谢 cmets... 所以当新版本的浏览器发布时,相应的不同语言*的 JS 引擎会升级以支持类似于 JVM 的 javascript 功能。这将解释 node.js 以及它使用 V8。总之,我们需要升级后的 JS 引擎来理解任何被添加的新特性 javascript。
标签: javascript ecmascript-6 browser arrow-functions