在typescript类构造函数中将值动态设置为“this”

时间:2016-05-04 11:08:00

标签: typescript

这是一个简化的课程。 我尝试在构造函数中循环键值,以动态地为此赋值。但它不起作用。这是语法问题吗?或者是不可能的?

class DirectoryModel {

    public link_title: string
    public link_desc: string

    constructor(fields: any) {
        console.log(fields) // ok
        _.forOwn(fields, function (value, key) {
            console.log(key) // ok
            console.log(value) // ok
            this[key] = value // "Cannot set property 'link_title' of undefined"
        })

       // this.link_title = fields.link_title
       // this.link_desc = fields.link_desc
    }
}

1 个答案:

答案 0 :(得分:1)

正如Yasser评论的那样,this未绑定到您的DirectoryModel。使用arrow functionsthis绑定到您的实例:

class DirectoryModel
{

    public link_title: string
    public link_desc: string

    constructor(fields: any)
    {
        _.forOwn(fields, (value, key) => //This binds `this`
        {
            this[key] = value
        })
    }
}