JavaScript等效于这个小PHP代码


JavaScript equivalent of this small PHP code

我想要一个"static"方法"create",它在我的JavaScript代码中返回一个"class"的新实例。

在PHP中,我会这样做:

abstract class Object {
    public static function create() {
        return new static;
    }
}
class Foo extends Object { }
$foo = Foo::create();

在JavaScript中,我有:

var Object = function() { };
var Foo = function() { };
Foo.prototype = new Object;

我想能够做到:

var foo = Foo.create();

有可能做到吗?如果是,我应该补充什么?

谢谢你的帮助。

它实际上非常简单,尽管可能会混淆什么是"静态"的语义:

function Foo(){
  this.bar=true;
}
Foo.create= function(){ return new this; };
var foo = Foo.create();

根据OP的要求,替代版本适用于所有构造函数:

function Foo(){
  this.bar=true;
}
Function.prototype.create= function(){ return new this; };
var foo = Foo.create();

我不确定这是否是你想要的,但它可能会有所帮助。

var Foo = {
    create: function () {
        function F() {}
        // Add any default properties/methods/etc.
        F.prototype.bar = true;
        F.prototype.dr = function() { return "Pepper"; };
        // Return a new object containing defaults listed above
        return new F();
    }
};
var baz = Foo.create();