如何将这个IIFE重写为ES6课程?

时间:2017-03-08 22:23:33

标签: javascript es6-class

所以我有这个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;

})();

2 个答案:

答案 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。如果它有问题请更新。