在JavaScript中,您可以使用一个小技巧来使新关键字可选:
function Frob(args) {
if (!(this instanceof Frob)) {
return new Frob(args);
}
// Normal initialization logic
}
这样,您可以使用或不使用new关键字来实例化Frob:
new Frob('foo'); // a Frob instance
Frob('bar'); // also a Frob instance
有没有办法在CoffeeScript中使用class关键字执行此操作?
解决方法:
只需定义一个构造函数:
class Frob
constructor: (args) ->
return new Frob(args) unless this instanceof Frob
### Rest of your init code ###
var Frob;
Frob = (function() {
function Frob(args) {
if (!(this instanceof Frob)) {
return new Frob(args);
}
}
return Frob;
})();