为什么浏览器支持对象的隐式函数属性
var obj = { foo: function() { return "this is foo"; }, bar() { return "this is bar"; } }
在NodeJS中执行此操作会导致在第3行处出现SyntaxError(在预期的第3行)。
尽pipeChrome和Firefox看起来非常开心,但似乎显然是错误的:
console.log(obj.foo()); // "this is foo" console.log(obj.bar()); // "this is bar"
为什么浏览器引擎支持这种语法? 有这种行为的文件?
正如jcubic指出的那样,ES6语法就是答案。 具体而言, 对象文字扩展 。
这是凯尔辛普森的伟大的YDKJS系列片段。
对象文字扩展名 ( 来源 )
ES6为卑微的
{ .. }
对象文字增加了许多重要的便利扩展。简洁的属性
你当然熟悉以这种forms声明对象文字:
var x = 2, y = 3, o = { x: x, y: y };
如果说x:x总是觉得多余,那么这里有个好消息。 如果您需要定义与词法标识符名称相同的属性,可以将其从x:x缩短为x。 考虑:
var x = 2, y = 3, o = { x, y };
简明的方法 ( 来源 )
与我们刚刚研究的简洁属性类似的精神,为了方便起见,附在属性中的函数也具有简洁的forms。
旧的方式:
var o = { x: function(){ // .. }, y: function(){ // .. } }
而从ES6开始:
var o = { x() { // .. }, y() { // .. } }