var obj = {
foo: function() { return "this is foo"; },
bar() { return "this is bar"; }
}
在NodeJS中执行此操作会在条^
处产生一个SyntaxError(在第3行 - 正如预期的那样。
Chrome和Firefox似乎非常开心,但看起来显然是错误的:
console.log(obj.foo()); // "this is foo"
console.log(obj.bar()); // "this is bar"
为什么浏览器引擎支持这种语法?是否有关于此行为的文档?
答案 0 :(得分:1)
正如jcubic所指出的,ES6语法就是答案。 具体来说, Object Literal Extensions 。
以下是来自Kyle Simpson的精彩YDKJS series的摘录。
对象文字扩展程序(source)
ES6为简陋的
{ .. }
对象文字添加了许多重要的便利扩展。简明属性
您当然熟悉以这种形式声明对象文字:
var x = 2, y = 3, o = { x: x, y: y };
如果说x:x全部都是多余的话,那总是觉得多余,那就是好消息。 如果需要定义与词法同名的属性 标识符,您可以将它从x:x缩短为x。考虑:
var x = 2, y = 3, o = { x, y };
简明方法(source)
与我们刚刚检查的简洁属性的类似精神,功能 附加到对象文字中的属性也有一个简洁的形式, 为方便起见。
旧方式:
var o = { x: function(){ // .. }, y: function(){ // .. } }
从ES6开始:
var o = { x() { // .. }, y() { // .. } }