假设我想创建以下 API:
var api = function(){}
api.prototype = {
constructor: api,
method: function() {
return this;
}
};
现在,这将像这样工作:
var myApi = new api();
myApi.method();
但是假设我想让new
关键字成为可选的,这样就可以了:
api().method();
我会不由自主地做:
var api = function() {
if ( !(this instanceof api) ) {
return new api();
}
};
但我想知道,这会不会很容易被感染,或者使用这种方法是否还有其他危险?我知道 f.ex jQuery 不这样做(他们将构造函数卸载到原型方法),所以我确信有充分的理由不这样做。我只是不认识他们。