HTML: Markup language
CSS: Styling language
JavaScript: Scripting language
Web APIs: Programming interfaces
All web technology
Learn web development
Discover our tools
Get to know MDN better
This page was translated from English by the community. Learn more and join the MDN Web Docs community.
View in English Always switch to English
This feature is well established and works across many devices and browser versions. It’s been available across browsers since сентябрь 2015 г..
Начиная с ECMAScript 6, существует короткий синтаксис для определения методов в инициализаторе объекта. По сути, это сокращение для функции, которая назначена имени метода.
var obj = { property([parameters]) {}, get property() {}, set property(value) {}, * generator() {} };
Короткий синтаксис похожий на синтаксис getter'ов и setter'ов представленных в ECMAScript 5.
Следующий код:
var obj = { foo: function () {}, bar: function () {}, };
Вы теперь можете сократить до:
var obj = { foo() {}, bar() {}, };
Методы-генераторы также могут быть определены используя короткий синтаксис. Обратите внимание, что звёздочка (*) в коротком синтаксисе должна быть перед именем свойства генератора. То есть, * g(){} будет работать, а g *(){} не будет.
* g(){}
g *(){}
// Используя свойство с именем (pre-ES6) var obj2 = { g: function* () { var index = 0; while (true) yield index++; }, }; // Тот же объект используя короткий синтаксис var obj2 = { *g() { var index = 0; while (true) yield index++; }, }; var it = obj2.g(); console.log(it.next().value); // 0 console.log(it.next().value); // 1
Все определения методов кроме методов-генераторов не могут быть конструкторами и будут выбрасывать TypeError если вы попытаетесь создать их экземпляр.
TypeError
var obj = { method() {}, }; new obj.method(); // TypeError: obj.method is not a constructor var obj = { *g() {}, }; new obj.g(); // Генератор
var obj = { a: "foo", b() { return this.a; }, }; console.log(obj.b()); // "foo"
Короткий синтаксис также поддерживает вычисляемые имена свойств.
var bar = { foo0: function () { return 0; }, foo1() { return 1; }, ["foo" + 2]() { return 2; }, }; console.log(bar.foo0()); // 0 console.log(bar.foo1()); // 1 console.log(bar.foo2()); // 2
Enable JavaScript to view this browser compatibility table.
get
set