所以我有这个IIFE,并且为了与其他ES6类的一致性我重写了一个插件,我也想把它重写成使用ES6 Class语法。谁能告诉我怎么做?
Foo = (function(){
Foo.bar = function(a, b){
baz = new this(a, b);
return baz;
}
function Foo(a, b){
this.a = a;
this.b = b;
}
return Foo;
})();
答案 0 :(得分:2)
这将是一个简单的
class Foo {
constructor(a, b) {
this.a = a;
this.b = b;
}
static bar(a, b) {
return new this(a, b);
}
}
答案 1 :(得分:0)
IIFE创建的函数也可以使用普通函数声明和属性赋值创建:
function Foo(a, b) {
this.a = a;
this.b = b;
}
Foo.bar = function(a, b) {
baz = new this(a, b);
return baz;
}
var foo = new Foo('FooA', 'FooB');
console.log(foo.a + ':' + foo.b);
var baz = Foo.bar('BazA', 'BazB');
console.log(baz.a + ':' + baz.b);
使用class syntax:
class Foo {
constructor(a, b) {
this.a = a;
this.b = b;
}
static bar(a, b){
baz = new this(a, b);
return baz;
}
}
var foo = new Foo('FooA','FooB');
console.log(foo.a + ':' + foo.b);
var baz = Foo.bar('BazA', 'BazB');
console.log(baz.a + ':' + baz.b);
不幸的是我实际上无法运行此代码,因为我目前所使用的网站具有无法识别类语法的SOE版本的Firefox和IE。如果它有问题请更新。