Javascript:对象函数定义

时间:2016-03-03 10:35:34

标签: javascript

我今天偶然发现了一些奇怪的事情,无法找到有关此行为的任何信息......

所以,一般来说,你可以这样做。

var test = {
    wtf: function() {
        console.log("Yep");
    }
}

test.wtf(); // shows "Yep"

但由于一些拼写错误我不小心结束了跟随,现在我想知道为什么这样做。任何人都可以向我解释这个吗?

var test = {
  wtf() {
    console.log("Why?");
  }
};

test.wtf(); // shows "Why?"

3 个答案:

答案 0 :(得分:2)

这是有效的ES6语法。这是一种名为"方法定义的简写"。

有关详细信息,请访问http://ariya.ofilabs.com/2013/03/es6-and-method-definitions.html。规范是here

答案 1 :(得分:0)

这是ES6中引入的Method Definition syntax。目前,Chrome,Firefox和Opera的最新版本支持此功能。

  

方法定义

     

从ECMAScript 2015(ES6)开始,引入了对象初始值设定项上方法定义的更短语法。它是分配给方法名称的函数的简写。

     

描述

     

简写语法类似于ECMAScript 5中引入的getter和setter语法。

     

给出以下代码:

with open('myfile.txt') as f:
    for line in f:
        first_word = line.split()[0]
     

您现在可以将其缩短为:

var obj = {
  foo: function() {},
  bar: function() {}
};
     

- MDN's documentation on Method Definitions

答案 2 :(得分:-1)

这是因为您在ECMASCRIPT-6环境中工作,

实际上Javascript正在发生变化,您可以按照以下步骤进行: https://kangax.github.io/compat-table/es6/

顺便说一下: 在ECMASCRIPT-5中,您只能以这种方式定义成员:

var myObject = {
  someMethod: function() {}
};

ECMASCRIPT-6引入了一些“短语”,即语法糖。

var myObject = {
  someMethod() {}
};

可在https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Method_definitions

获取更多信息