我可以使用CoffeeScript中的类使'new'关键字可选吗?

时间:2013-08-26 18:12:50

标签: javascript coffeescript

在JavaScript中,您可以使用一个小技巧使new关键字成为可选项:

function Frob(args) {
  if (!(this instanceof Frob)) {
    return new Frob(args);
  }

  // Normal initialization logic
}

这样,您可以使用Frob关键字实例化new

new Frob('foo'); // a Frob instance
Frob('bar');     // also a Frob instance

有没有办法在CoffeeScript中使用class关键字执行此操作?

1 个答案:

答案 0 :(得分:5)

只需定义一个构造函数:

class Frob
  constructor: (args) ->
    return new Frob(args) unless this instanceof Frob
    ### Rest of your init code ###

Output

var Frob;

Frob = (function() {
  function Frob(args) {
    if (!(this instanceof Frob)) {
      return new Frob(args);
    }
  }

  return Frob;

})();