ES6-Konstruktor-Objekt param default-Werte

Ich versuche zu definieren, eine Javascript-Klasse, die mit einer definierten Konstruktor mit Parameter mit den meisten richtigen ES6-syntax. Auf den ersten, ist es einfach zu definieren, wie diese.

JS:

let param1 = 10;
let param2 = 'foo';
let param3 = 200;
let param4 = 'bar';

let props = {id: param1, options: { op1: param2, op2: param3, op3: param4 }};

console.log('Object props');
console.log(props);

class Test {
  
  constructor(props){
    this.id = props.id;
    this.options = props.options;
  }
  
}

let test1 = new Test(props);
console.log('Class test1');
console.log(test1.id);
console.log(test1.options.op2);

Aber wenn ich versuche, mit destructuring zu definieren, default-Werte, für die einer der Parameter des Konstruktors (op2eine Eigenschaft des verschachtelten Objekts options),ich bin nicht in der Lage, damit es funktioniert, während für die id Eigenschaft des Objekts, die ich in der Lage bin:

JS:

let param1 = 10;
let param2 = 'foo';
let param3 = 200;
let param4 = 'bar';

let props = {options: { op1: param2, op3: param4 }};

console.log('Object props');
console.log(props);

class Test {
  
  constructor({id = 'defaultId', options = { op2:'0'}} = {}){
    this.id = id;
    this.options = options;
  }
  
}

let test = new Test(props);
console.log('Class test');
console.log(test.id);
console.log(test.options);
console.log(test.options.op2);

Was ich erwarten sollte, ist, dass beim Debuggen mit console.log(test.options.op2) druckt der Standard-Wert, der im Konstruktor, sondern ich bin gettting undefined.

Ich würde auch gerne wissen, ob es eine richtige ES6-syntax bei der Definition von javascript-Klassen zu initialisieren class params.

  • {id = 'defaultId', options = { op2:'0'}} = {} Sie ein Objekt, um ein leeres Objekt?
  • Nein, es ist ein leeres Objekt als Standard, wenn kein argument angegeben wird.
InformationsquelleAutor Dez | 2016-11-17
Schreibe einen Kommentar