2017-11-14 4 views
2

メンバー変数に値を代入したいと考えているコンストラクタ内でES6オブジェクトの非構造化を試みています。それは動作していません。私は の値をメンバ関数の中に表示しているとき、その値は未定義です。コンストラクタ内で印刷すると正しく印刷されます。これは有効ですか?オブジェクトがnodejsの内部コンストラクタを破棄してメンバー変数に値を代入していません

class Environment { 
     constructor(env) { 
      const { name, version } = env 
      console.log(name) 
     } 

     printName() { 
      console.log(this.name) 
     } 
    } 
    var obj = { "name": "inst1", "version": "12.2.7" }; 
    var envObj = new Environment(obj); 
    envObj.printName(); 

答えて

1

あなたはaliasesを使用して小道具をオブジェクトに直接破壊さプロパティを割り当てることができますし、カッコ内のラップの式:

class Environment { 
 
    constructor(env) { 
 
     ({ name: this.name, version: this.version } = env); 
 
    } 
 

 
    printName() { 
 
     console.log(this.name) 
 
    } 
 
} 
 
var obj = { "name": "inst1", "version": "12.2.7" }; 
 
var envObj = new Environment(obj); 
 
envObj.printName();

envが希望プロパティのみが含まれている場合(名、バージョン)Object#assignに直接this

class Environment { 
 
    constructor(env) { 
 
     Object.assign(this, env); 
 
    } 
 

 
    printName() { 
 
     console.log(this.name) 
 
    } 
 
} 
 
var obj = { "name": "inst1", "version": "12.2.7" }; 
 
var envObj = new Environment(obj); 
 
envObj.printName();

関連する問題