在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
关键字做到这一点? 最佳答案
只需定义一个构造函数即可:
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;
})();