相关疑难解决方法(0)

如果没有"function"关键字,此对象方法定义如何工作?

我意外地忽略了function关键字而发现了这一点.通常foobar下面模块中的方法将被声明为foobar: function(arg1),但有趣的是以下工作,至少在某些浏览器中,例如Chrome版本44.0.2403.157 m,但它在IE 11.0.9600.17959中失败

在任何浏览器中都可以运行它怎么可能?这是某种新的ES6功能吗?

var module = {
    foobar(arg1) {
        alert(arg1);
    }
};

module.foobar("Hello World");
Run Code Online (Sandbox Code Playgroud)

javascript methods function shorthand ecmascript-6

18
推荐指数
2
解决办法
3843
查看次数

构造函数使用ES6简写表示法表现不同

ES6引入了一种简写符号来初始化具有函数和属性的对象.

// ES6 shorthand notation
const obj1 = {
    a(b) {
        console.log("ES6: obj1");
    }
};

// ES5
var obj2 = {
    a: function a(b) {
        console.log("ES5: obj2");
    }
};

obj2.a();
obj1.a();

new obj2.a();
new obj1.a();
Run Code Online (Sandbox Code Playgroud)

但是,正如您所看到的,这些不同的符号表现不同.如果我new obj1.a()在浏览器中(测试过的Chrome和Firefox),我会得到一个TypeError: obj1.a is not a constructor.new obj2.a()表现完全正常.

这里发生了什么?有没有人有解释,和/或文档/规范的链接?

javascript methods shorthand ecmascript-6

10
推荐指数
1
解决办法
264
查看次数

标签 统计

ecmascript-6 ×2

javascript ×2

methods ×2

shorthand ×2

function ×1