0

我想要一个“静态”方法“create”,它在我的 JavaScript 代码中返回一个“类”的新实例。

在 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();

有可能吗?如果是,我应该添加什么?

谢谢你的帮助。

4

2 回答 2

0

我不确定这是否是您所追求的,但这可能会有所帮助。

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();
于 2013-07-12T20:42:23.430 回答
0

尽管“静态”的语义可能令人困惑,但它实际上非常简单:

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();
于 2013-07-12T19:57:08.640 回答