你能解释一下这个JavaScript语法(变量外推)吗?
Can you explain this JavaScript syntax (variable extrapolation)?
我只是看到了一些我以前从未见过的东西,似乎找不到它到底是什么的解释......不在 ES5.1 标准和 ES6 草案中,也不在 Mozilla ES6 支持中。
请在技术上解释正在发生的事情(匿名对象,匿名块?),并提供一些参考ES标准中的部分或其他一些资源来解释这一点。
上下文是一个火狐扩展。
const // var also works here it seems
{
classes : Cc
, interfaces : Ci
, utils : Cu
} = Components
它在当前作用域上创建变量 Cc、Ci、Cu。这有点违反直觉,因为这看起来像一个匿名对象,但人们会期望属性名称在左侧,值在右侧......
相关结构的来源:https://developer.mozilla.org/en-US/Add-ons/Overlay_Extensions/XUL_School/JavaScript_Object_Management
更新:多亏了狮子座,我找到了合适的词(解构)。我发现这个博客解释得很好。
ES6 解构。更具体地说,对象解构。
Components
应该是这样的:
{classes: 'asdf', interfaces: 'qwer', utils: `zxcv`}
然后你得到三个常量(用 const
定义,赋值后是只读的):
Cc // 'asdf'
Ci // 'qwer'
Cu // 'zxcv'
正如 Mozilla 文档所述:
通常的做法是缩写
Components.classes
和Components.interfaces
,将对对象的引用存储为 不断:
const Cc = Components.classes, Ci = Components.interfaces;
var os = Cc["@mozilla.org/observer-service;1"] .getService(Ci.nsIObserverService);
你在这里看到的是这种常见的做法,通过 ES6 对象解构进一步压缩。
- 为两个ID设置一个变量的正确语法
- 在javascript函数的循环中设置全局布尔变量的最佳语法
- Javascript函数变量传递语法问题
- Javascript中的LESS变量给出语法错误
- Jquery 替换所有文本语法正则表达式中的变量
- 使用带有返回的 Jquery 变量的正确语法
- Jquery 语法和变量
- 动态变量名语法
- 用于将变量传递给函数的javascript语法
- 语法错误:意外的令牌非法设置变量
- 语法错误:我的 js 代码中出现意外的令牌变量
- 通过 Excel VBA 引用 Acrobat Javascript 全局变量所需的语法是什么?
- JavaScript,声明变量时混淆语法
- j查询选择器变量语法纠错
- AngularJS-html中的scope变量语法
- 简写Javascript变量语法
- 指令不能替换模板中的变量:语法错误
- Javascript变量变量(语法错误)
- Javascript 自定义变量语法而不是 var 使用 $
- Jquery选择器变量语法