2016-05-04 2 views
1

ここでは単純化されたクラスです。 コンストラクタのキー値をループして、値を動的に割り当てようとしました。しかし、それは動作しません。構文上の問題ですか?それとも不可能なのでしょうか?typescriptクラスのコンストラクタで値を "this"に動的に設定します

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

バインド機能は必要ありませんか?それ以外の場合、 'this'はおそらく' window'でしょう。 – yelsayed

答えて

1

Yasserがコメントしたように、thisはDirectoryModelにバインドされていません。 arrow functionsを使用してthisをインスタンスにバインドします。

class DirectoryModel 
{ 

    public link_title: string 
    public link_desc: string 

    constructor(fields: any) 
    { 
     _.forOwn(fields, (value, key) => //This binds `this` 
     { 
      this[key] = value 
     }) 
    } 
} 
関連する問題