JavaScript相当于这个小PHP代码

时间:2013-07-12 19:45:54

标签: php javascript class inheritance 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();

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

感谢您的帮助。

2 个答案:

答案 0 :(得分: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();

答案 1 :(得分: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();