我们可以获取javascript类的属性吗?

时间:2018-12-21 14:37:03

标签: javascript es6-class

我有这个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只处理对象;一种方法来验证属性是否是类的属性?还是我必须创建一个实例进行测试?

1 个答案:

答案 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)));