-2

我有一个这样定义的类型:

function Type(){} ;

我还有一个动态创建类型的类,所以我传递了类型。

function Factory(Type){};

我需要检查该类型是否具有任何给定的属性。我的问题与类似,但我需要检查类型而不是对象。

[更新] 我尝试创建一个适用于我的某些类型的临时对象,但是我的某些类型需要构造函数上的一些参数,如果找不到正确的参数类型,则会引发异常。

4

1 回答 1

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) {
    ...
}

这只有在您遵循自己的规则时才会起作用。

于 2014-12-19T19:44:02.707 回答