我今天偶然发现了一些奇怪的事情,无法找到有关此行为的任何信息......
所以,一般来说,你可以这样做。
var test = {
wtf: function() {
console.log("Yep");
}
}
test.wtf(); // shows "Yep"
但由于一些拼写错误我不小心结束了跟随,现在我想知道为什么这样做。任何人都可以向我解释这个吗?
var test = {
wtf() {
console.log("Why?");
}
};
test.wtf(); // shows "Why?"
答案 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() {} };
答案 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
获取更多信息