为什么这段代码在javascript中运行?对象内部的函数

Hit*_*ua1 4 javascript function object ecmascript-6

当我在javascript控制台中键入此代码时,这不是通过错误,而是运行.

var a = { 
  b:"123",
  update(){
     console.log("hello");
  }
}
Run Code Online (Sandbox Code Playgroud)

问题是,update()没有函数关键字,当我检查对象的属性时a,我得到:

b: "123"
update: function ()
__proto__: Object
Run Code Online (Sandbox Code Playgroud)

什么是javascript实际上在这里做?

the*_*eye 5

在ECMA Script 6中,您可以在创建对象时定义对象的属性,而不使用:.

例如,

var data = 100;
var a = { data };
console.log(a);
// { data: 100 }
Run Code Online (Sandbox Code Playgroud)

类似地,在您的情况下,您正在创建两个属性,一个被调用b,另一个被调用update,其中b是100,update实际上是一个被调用的函数对象update.

在这里阅读更多相关信息


注意:这只是ECMA Script 6中引入的简写符号.您仍然可以使用ECMA Script 5方式创建属性函数,例如

var a = {
  b: "123",
  update: function update() {
     console.log("hello");
  }
}
Run Code Online (Sandbox Code Playgroud)