Ответ 1
Это то, что называется назначение деструкции, и это новая функция JavaScript 1.7 (и ECMAScript 6) (В настоящее время доступно только в JavaScript-движке FireFox.) Примерно он будет переведен в это:
var ActionButton = require("sdk/ui/button/action").ActionButton;
В этом примере кажется глупым, поскольку назначается только один элемент. Тем не менее, вы сможете использовать этот шаблон для одновременного назначения нескольких переменных:
{x, y} = foo;
Является эквивалентом:
x = foo.x;
y = foo.y;
Это также можно использовать для массивов. Например, вы можете легко заменить два значения без использования временной переменной:
var a = 1;
var b = 3;
[a, b] = [b, a];
Поддержка браузера можно отслеживать с помощью таблицы совместимости ES6 для kangax.