找出类型是否具有属性

时间:2014-12-19 19:35:01

标签: javascript hasownproperty

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

function Type(){} ;

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

function Factory(Type){};

我需要检查类型是否具有任何给定属性。我的问题类似于this,但我需要检查不在对象上的类型。

[UPDATE] 我已经尝试创建一个适用于我的某些类型的临时对象,但是我的一些类型需要在构造函数上使用一些参数,如果找不到正确的参数类型则抛出异常。

1 个答案:

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

只有遵循自己的规则,这才有效。