This page was translated from English by the community.Learn more and join the MDN Web Docs community.
Определение методов
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since сентябрь 2015 г..
Начиная с ECMAScript 6, существует короткий синтаксис для определения методов в инициализаторе объекта. По сути, это сокращение для функции, которая назначена имени метода.
In this article
Синтаксис
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 *(){} не будет.
// Используя свойство с именем (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); // 0console.log(it.next().value); // 1Определения методов (ES6) не могут быть конструкторами
Все определения методов кроме методов-генераторов не могут быть конструкторами и будут выбрасыватьTypeError если вы попытаетесь создать их экземпляр.
var obj = { method() {},};new obj.method(); // TypeError: obj.method is not a constructorvar 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()); // 0console.log(bar.foo1()); // 1console.log(bar.foo2()); // 2Спецификации
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-method-definitions> |