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

时间:2016-05-25 06:41:52

标签: javascript function object ecmascript-6

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

var a = { 
  b:"123",
  update(){
     console.log("hello");
  }
}

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

b: "123"
update: function ()
__proto__: Object

javascript实际上在这里做什么?

2 个答案:

答案 0 :(得分:5)

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

例如,

var data = 100;
var a = { data };
console.log(a);
// { data: 100 }

同样,在您的情况下,您要创建两个属性,一个称为b,另一个称为update,其中b为100,update实际上是update一个名为var a = { b: "123", update: function update() { console.log("hello"); } } 的函数对象。

详细了解here

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

 IF (@psRegionCode <> 0)
 BEGIN
     SET @sSQLStr = @sSQLStr + 
         ' AND reg.region_cd = ' + cast(@psRegionCode as nvarchar(10))

答案 1 :(得分:0)

创建javascript对象的语法是:

var bgPoly = canvas.append('polygon')
    .style('fill', '#ff9900')
    .attr('points','282.0000915527344,104,280.0001220703125,165.00009155273438,349,174.99998474121094,345.00006103515625,105.99999237060547,282.0000915527344,104')

这里fullnme是对象的一个​​方法,可以使用以下方法访问: -

var person = {
    firstName: "John",
    lastName : "Doe",
    id       : 5566,
    fullName : function() {
       return this.firstName + " " + this.lastName;
    }
};

因为你的代码中有()

person.fullname()

Javascript将其理解为一种功能。希望这个解释有所帮助。