我有这个javascript类:
class UserDTO {
constructor(props) {
this.username = props.username;
this.birthday = props.birthday;
}
}
并且我有一个将实体转换为DTO的类Utils:
class Utils {
convertEntityToDTO (entityObj, DTOClass) {
// entityObj is an instance of a Entity,
// DTOClass is a class not an instance
let objDTO = new DTOClass();
Object.getOwnPropertyNames(entityObj)
.filter(prop => DTOClass.hasOwnProperty(prop))
.forEach(prop => {
objDTO[prop] = entityObj[prop];
});
}
}
这不适用于一个班级; hasOwnProperty只处理对象;一种方法来验证属性是否是类的属性?还是我必须创建一个实例进行测试?
答案 0 :(得分:0)
您可以在实例上使用hasOwnProperty
并在getOwnPropertyNames
上使用
class A {
constructor() {
this.ex = 'TEST';
}
}
var a = new A();
console.log(a.hasOwnProperty('ex'));
console.log(Object.getOwnPropertyNames(a));
如果您想要这些方法,则需要获取原型:
class B {
constructor() {}
exMethod() {
console.log('test');
}
}
var b = new B();
console.log(Object.getPrototypeOf(b).hasOwnProperty('exMethod'));
console.log(Object.getOwnPropertyNames(Object.getPrototypeOf(b)));