我想要一个'静态'方法“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();
有可能吗?如果是,我应该添加什么?
感谢您的帮助。
答案 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();