我有一个这样定义的类型:
function Type(){} ;
我还有一个动态创建类型的类,所以我传递了类型。
function Factory(Type){};
我需要检查类型是否具有任何给定属性。我的问题类似于this,但我需要检查不在对象上的类型。
[UPDATE] 我已经尝试创建一个适用于我的某些类型的临时对象,但是我的一些类型需要在构造函数上使用一些参数,如果找不到正确的参数类型则抛出异常。
答案 0 :(得分:2)
语言中没有任何内容可以强制执行类的所有对象具有相同的属性集。构造函数可以根据参数决定要创建的属性,并且正如问题所指出的,参数不可用。
如果你没有对象的实例,你应该使用自己的约定来从类本身提供这些信息。
一个想法是初始化类的原型上的所有属性,例如:
function Type(owner) {
this.owner = owner;
}
Type.prototype.owner = null;
Type.prototype.counter = 0;
Type.prototype.increment = function () {
this.counter++;
};
然后,在Factory
,
if ('counter' in Type.prototype) {
...
}
if ('owner' in Type.prototype) {
...
}
只有遵循自己的规则,这才有效。