4

如何遍历类属性列表并获取每个属性的值(仅属性而不是函数)

class Person{
 name:string;
 age:number;
 address:Address;
 getObjectProperties(){
   let json = {};
    // I need to get the name, age and address in this JSON and return it
    // how to do this dynamically, rather than getting one by one 
    // like json["name"] = this.name;
   return json;
 }
}

请帮忙。

4

2 回答 2

2

如果您查看以下编译后的代码,则不能这样做:

class Person {
    name: string;
    age: number;
    address: Address;
}

你会看到这些属性不是它的一部分:

var Person = (function () {
    function Person() {
    }
    return Person;
}());

仅当您分配一个值时,才会添加该属性:

class Person {
    name: string = "name";
}

编译为:

var Person = (function () {
    function Person() {
        this.name = "name";
    }
    return Person;
}());

您可以为此使用属性装饰器

于 2017-03-17T19:43:55.853 回答
0

注意:我假设您已将值分配给您的字段,例如name. 如果不是这种情况,这将不起作用。

// if you want json as a string
getObjectProperties(){
   let json = JSON.stringify(this);
}

或者

// if you want a copy of the fields and their values
getObjectProperties(){
   let json = JSON.parse(JSON.stringify(this));
}

或者,如果您想遍历属性,请参阅重复的Iterate through object properties

于 2017-03-17T19:44:09.987 回答