我有一个这样定义的类型:
function Type(){} ;
我还有一个动态创建类型的类,所以我传递了类型。
function Factory(Type){};
我需要检查该类型是否具有任何给定的属性。我的问题与此类似,但我需要检查类型而不是对象。
[更新] 我尝试创建一个适用于我的某些类型的临时对象,但是我的某些类型需要构造函数上的一些参数,如果找不到正确的参数类型,则会引发异常。
我有一个这样定义的类型:
function Type(){} ;
我还有一个动态创建类型的类,所以我传递了类型。
function Factory(Type){};
我需要检查该类型是否具有任何给定的属性。我的问题与此类似,但我需要检查类型而不是对象。
[更新] 我尝试创建一个适用于我的某些类型的临时对象,但是我的某些类型需要构造函数上的一些参数,如果找不到正确的参数类型,则会引发异常。
语言中没有强制要求类的所有对象都具有相同的属性集。构造函数可以根据参数决定要创建哪些属性,并且正如问题所指出的那样,参数不可用。
如果您没有对象的实例,您应该使用您自己的约定来使该信息可从类本身获得。
一种想法是初始化类原型上的所有属性,例如:
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) {
...
}
这只有在您遵循自己的规则时才会起作用。