2016-07-20 11 views
0

Ich versuche, eine Funktion, die ein Objektliteral enthält, in eine Klasse zu konvertieren, und bin mir nicht sicher, wie ich das Objektliteral beim Konvertieren in eine Klasse behandeln würde. Beispiel:Funktionsobjekt Literal konvertiert in Klasse ES6

function Commercial(channel, name) { 
    this.recording = { 
     isChannelLive: true, 
     isNameRated: false, 
     timeSlots: function() { 
      this.active = false; 
      this.recording = false; 
     } 
    }; 
} 

Also, um herauszufinden, ich hoffe, wie so etwas zu tun:

class Commercial { 
    constructor(channel, name) { 
     this.channel = channel; 
     this.name = name; 
    } 
    this.recording = { 
     isChannelLive: true, 
     isNameRated: false, 
     timeSlots: function() { 
      this.active = false; 
      this.recording = false; 
     } 
    }; 
} 

Sie nicht wissen, wie die Objektliteral zu behandeln?

Ich möchte die Funktion in eine Klasse ändern, die einen Konstruktor für den Kanal und den Namen haben wird, aber nicht sicher, wie das Objektliteral behandelt wird.

Vielen Dank für Ihre Hilfe.

+1

es einfach tun, um die gleiche Art und Weise in den Konstruktor. – gcampbell

+0

Diese 'timeSlots' Methode ist seltsam. Wer würde es nennen, auf welches Objekt? – Bergi

+0

Worauf soll 'this.recording' in der' timeSlots' Methode Bezug nehmen? – Bergi

Antwort

2

Sie setzen würde genau den gleichen Code, der zur Zeit im ES5 Konstruktor in den ES6 Klassen Konstruktor:

class Commercial { 
    constructor(channel, name) { 
     this.channel = channel; 
     this.name = name; 
     this.recording = { 
      isChannelLive: true, 
      isNameRated: false, 
      timeSlots: function() { 
       this.active = false; 
       this.recording = false; 
      } 
     }; 
    } 
} 
+0

Kühl. Was nun, wenn es außerhalb des Konstruktors ist? Also erstelle ich meinen Konstruktor und habe dann diese.Aufzeichnung, die nicht im Konstruktor ist. Muss ich das Literal innerhalb einer Methode umbrechen? – pertrai1

+0

@ pertrai1 [Dieser Vorschlag] (https://github.com/jeffmo/es-class-public-fields) könnte Sie interessieren. – gcampbell

+0

@ pertrai1: Was meinst du mit "außerhalb des Konstruktors"? Wenn Sie eine Instanz haben, greifen Sie einfach auf ihre Eigenschaft ".recording" zu. Alles funktioniert wie in ES5. – Bergi