JavaScript getter 定义为数组而不是函数?
JavaScript getter defined as an array instead of a function?
我无法将以下内容与我阅读过的任何 JavaScript 文档进行核对。有人可以解释一下吗?
以下片段摘自 file panelUI.js in the Mozilla repository。
const PanelUI = {
/** Panel events that we listen for. **/
get kEvents() ["popupshowing", "popupshown", "popuphiding", "popuphidden"],
// more properties...
_addEventListeners: function() {
for (let event of this.kEvents) {
this.panel.addEventListener(event, this);
}
// more code...
},
// more properties...
我读到的关于 JS 的所有内容都将 getter 定义为本质上是一个函数(或“一种获取特定 属性 值的方法”和“get 语法将对象 属性 绑定到一个函数,该函数将在查找 属性 时调用 ”),所以我有点困惑地看到一个数组文字,我希望在其中找到函数的主体 kEvents()
.
在 JS 中函数名后跟数组字面值(通常或作为 get 定义的一部分)是什么意思?
您将如何编写功能上与上述代码等效但不使用这种奇怪语法的代码?
这在任何方面都是无效的JavaScript...除非 Firefox 出于某种原因允许它作为替代语法。
但是,如果您尝试 运行 在 chrome 等浏览器中使用此代码或类似代码,甚至尝试使用 Babel 和 ES6 编译它,都会失败。
我认为这是 SpiderMonkey 对 expression closures.
的非标准和弃用支持的结果
How would you write code that is functionally equivalent to the above, but does not use this somehow odd syntax?
"equivalent" 语法似乎是将数据包裹在花括号中,return 它:
get kEvents() {
return ["popupshowing", "popupshown", "popuphiding", "popuphidden"];
},
我猜测示例代码 return 每次都是同一个数组实例,而我的代码每次调用时都会生成一个新数组。
我想列出的行是 mozilla 实现的非标准语法,但与任何当前规范无关。浏览器开发社区通常会通过这些功能推动浏览器实现一项新功能,以查看它是否值得标准化。它可能是一个提议的语法,后来也被删除了
综上所述,这是推测性的,因为我从未见过其中包含该语法的标准。
我无法将以下内容与我阅读过的任何 JavaScript 文档进行核对。有人可以解释一下吗?
以下片段摘自 file panelUI.js in the Mozilla repository。
const PanelUI = {
/** Panel events that we listen for. **/
get kEvents() ["popupshowing", "popupshown", "popuphiding", "popuphidden"],
// more properties...
_addEventListeners: function() {
for (let event of this.kEvents) {
this.panel.addEventListener(event, this);
}
// more code...
},
// more properties...
我读到的关于 JS 的所有内容都将 getter 定义为本质上是一个函数(或“一种获取特定 属性 值的方法”和“get 语法将对象 属性 绑定到一个函数,该函数将在查找 属性 时调用 ”),所以我有点困惑地看到一个数组文字,我希望在其中找到函数的主体 kEvents()
.
在 JS 中函数名后跟数组字面值(通常或作为 get 定义的一部分)是什么意思?
您将如何编写功能上与上述代码等效但不使用这种奇怪语法的代码?
这在任何方面都是无效的JavaScript...除非 Firefox 出于某种原因允许它作为替代语法。
但是,如果您尝试 运行 在 chrome 等浏览器中使用此代码或类似代码,甚至尝试使用 Babel 和 ES6 编译它,都会失败。
我认为这是 SpiderMonkey 对 expression closures.
的非标准和弃用支持的结果How would you write code that is functionally equivalent to the above, but does not use this somehow odd syntax?
"equivalent" 语法似乎是将数据包裹在花括号中,return 它:
get kEvents() {
return ["popupshowing", "popupshown", "popuphiding", "popuphidden"];
},
我猜测示例代码 return 每次都是同一个数组实例,而我的代码每次调用时都会生成一个新数组。
我想列出的行是 mozilla 实现的非标准语法,但与任何当前规范无关。浏览器开发社区通常会通过这些功能推动浏览器实现一项新功能,以查看它是否值得标准化。它可能是一个提议的语法,后来也被删除了
综上所述,这是推测性的,因为我从未见过其中包含该语法的标准。