我有这段JavaScript代码:
var Type = function(name) {
this.name = name;
};
var t = new Type();
现在我想添加这个:
var wrap = function(cls) {
// ... wrap constructor of Type ...
this.extraField = 1;
};
因此我可以做:
wrap(Type);
var t = new Type();
assertEquals(1, t.extraField);
[编辑] 我需要一个实例属性,而不是一个类(静态/共享)属性。
在包装函数中执行的代码应该像我将其粘贴到真正的构造函数中一样工作。
Type
的类型不应更改。
wrap()
函数中Type
的原型。例如:var wrap = function(cls) { cls.prototype.extraField=1; };
?或者最好创建一个新的Type2
继承自Type
并附加额外的extraField
成员? - Andrew D.