我在Firefox的addon-sdk中看到了很多示例,当声明变量时会使用下面的样式。
var { Hotkey } = require("sdk/hotkeys");
相较于使用var HotKey
,使用var { Hotkey }
有什么不同之处?为什么要使用额外的花括号?
我在Firefox的addon-sdk中看到了很多示例,当声明变量时会使用下面的样式。
var { Hotkey } = require("sdk/hotkeys");
相较于使用var HotKey
,使用var { Hotkey }
有什么不同之处?为什么要使用额外的花括号?
这是解构赋值。
var {Hotkey} = require('sdk/hotkeys');
等价于:
var Hotkey = require('sdk/hotkeys').Hotkey;
参见harmony:destructuring提案,其中包括以下示例:
// object destructuring
var { op: a, lhs: b, rhs: c } = getASTNode()
// digging deeper into an object
var { op: a, lhs: { op: b }, rhs: c } = getASTNode()
var {Hotkey} = require('sdk/hotkeys');
的示例。 - Navaneeth K Nvar {op: a} = getASTNode()
等价于 var a = getASTNode().op
。":"左边的标记是属性名称,":"右边的标记是变量名称。不过,通常情况下,人们希望在两种情况下使用相同的名称,例如var {Hotkey: Hotkey} = require('sdk/hotkeys')
。由于这是一个常见的模式,因此有一种简写方式:var {Hotkey} = require('sdk/hotkeys')
。 - davidchambers