可能重复:
如何检测函数是否被称为构造函数?
我想在 JavaScript 中有一个函数,如果它被正常调用或被调用以创建一个新实例,它的行为会有所不同。可能有许多不同的用途,其中两个功能可以相关或不相关。new
当函数总是用于创建新实例时,一种用途是使编码器不必键入:
function MyClass(arg1, arg2) {
if(/* not called with "new" */) return new MyClass(arg1, arg2);
// instance initialization stuff here...
}
这样我就不必打字了var x = new MyClass(arg1, arg2)
:打字就足够了var x = MyClass(arg1, arg2)
(但前者也不会错)。
只是可能用途的一个例子。
这可以做到吗?如果是这样,怎么做?