代码之家  ›  专栏  ›  技术社区  ›  Zuhair Taha

如何获取javascript类属性列表

  •  1
  • Zuhair Taha  · 技术社区  · 6 年前

    我有一节课:

    class Student {
        constructor(name, birthDate) {
            this.name = name;
            this.birthDate = birthDate;
        }
    
        get age() {
            return 2018 - this.birthDate;
        }
    
        display() {
            console.log(`name ${this.name}, birth date: ${this.birthDate}`);
        }
    }
    
    console.log(Object.getOwnPropertyNames.call(Student));

    我要获取属性列表名称。我试着用这样的方法:

    Object.getOwnPropertyNames.call(Student)
    

    但它不起作用。在这个例子中我应该得到的只是姓名和生日。没有其他方法或获取方法。

    1 回复  |  直到 6 年前
        1
  •  8
  •   deceze    6 年前

    问题是你用的是 Object.getOwnPropertyNames call 在它上面,你只需调用它。*你需要传递一个 Student ;类对象本身没有任何属性。属性是在构造函数中创建的,没有任何东西可以通过查看类对象来告诉您实例将具有哪些属性。

    class Student {
        constructor(name, birthDate) {
            this.name = name;
            this.birthDate = birthDate;
        }
    
        get age() {
            return 2018 - this.birthDate;
        }
    
        display() {
            console.log(`name ${this.name}, birth date: ${this.birthDate}`);
        }
    }
    
    console.log(Object.getOwnPropertyNames(new Student));

    *如果有的话, Object.getOwnPropertyNames.call(Object, new Student) 做你想做的,但那是荒谬的。