Javascript 我无法识别的对象语法

Javascript object syntax that I can't recognize

我有这个代码片段:

proxy('http://my-custom-api-endpoint.com', {
  proxyReqOptDecorator(options) {
    options.headers['x-forwarded-host'] = 'localhost:3000'
    return options
  }
})

它是对一个名为 proxy 的函数的调用,第一个参数是一个字符串,但第二个参数的语法我无法识别:

{
  functionName(args) {
    // statements
  }
}

有人可以解释一下这个语法吗?

它是 Object Initializer 中的一个 shorthand 方法,用于创建一个 属性 其值是一个函数。

// Shorthand method names (ES2015)
let o = {
  property(parameters) {}
}
//Before
let o = {
  property: function(parameters) {}
}

此语法也在 classes 中用于声明 class 方法。

class Animal { 
  speak() {
    return this;
  }
  static eat() {
    return this;
  }
}class Animal { 
  speak() {
    return this;
  }
  eat() {
    return this;
  }
}