Является ли {abcFun c (arg1, arg2) {/ * FuncBody * /}} новым синтаксисом метода объекта? - PullRequest
6 голосов
/ 18 января 2020

Когда я читал документы MDN, я получил следующий синтаксис объектов,

var o = {
  a: 7,
  get b() { 
    return this.a + 1;
  },
  set c(x) {
    this.a = x / 2;
  }
};

// ...

Отсюда. Сначала я подумал, что это было только для get & set , Но потом я увидел это,

// ...

const handler = {
  getPrototypeOf(target) {
    return monsterPrototype;
  }
};

// ...

Отсюда. И когда я тестировал с пользовательской функцией, это работало. здесь,

let obj = {
  _sum: 0,
  sum(a, b) {
    return this._sum += (a + b);
  }
}

console.log(obj.sum(2, 3));    // int 5
console.log(obj.sum(7, 3));    // int 15
console.log(obj.sum(25, 75));  // int 115

Я искал MDN, нашел новый синтаксис метода объектов, но все еще не смог найти этот синтаксис. Итак, я просто хочу, если это стандартный синтаксис, который я могу использовать или экспериментальную технологию. Я использую Chome v79.

1 Ответ

2 голосов
/ 18 января 2020

Этот синтаксис объекта известен как «сокращенные имена методов» и был введен в ES6 (поэтому он не является экспериментальной технологией и является частью текущего стандарта). Это позволяет вам пропустить ключевое слово function, чтобы имя функции использовалось в качестве имени свойства:

В ECMAScript 2015 доступна сокращенная запись, так что ключевое слово "функция" больше не требуется.

Вы можете использовать сокращенные имена методов в большинстве современных браузеров, однако Inte rnet Explorer в настоящее время не поддерживает этот синтаксис.

Подробнее об определениях методов в объектах можно прочитать здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...