2016-07-13 12 views
1

Ich baue eine Liste von Objekten.OOP - Gemeinsame Eigenschaft in der Liste der Objekte

Es sieht wie folgt aus:

var item = {} // new object 
item['d'] = { 
    element: 'string', 
    val_1: false, 
    val_2: false, 
    val_3: false 
} 

Jedes dieser Objekte zu einer Art Familie oder Klasse angehören. Ich verstehe das Konzept der Klasse in OOP nicht vollständig.

Ich hätte zwei Familien: links und rechts.

Was würde ich tun, anstatt etwas wie dies zu tun:

item['d_right'] = { 
    element: 'Whatever', 
    val_1: false, 
    val_2: false, 
    val_3: false 
} 

item['d_left'] = { 
    element: 'Something', 
    val_1: false, 
    val_2: false, 
    val_3: false 
} 

Wäre so etwas zu haben sein:

class right { 

    item['d'] = { 
     element: 'Whatever', 
     val_1: false, 
     val_2: false, 
     val_3: false 
    } 

    // Other elements from the class right 

} 

class left { 

    item['d'] = { 
     element: 'Something', 
     val_1: false, 
     val_2: false, 
     val_3: false 
    } 

    // Other elements from the class left 

} 

Und dann, es in der Lage, leicht zu nennen wie:

console.log(item[left][d].element) // would echo "Something" 

Ist es eine Möglichkeit, so etwas zu tun?

Vielen Dank für Ihre Hilfe. Diese

+4

Mein Vorschlag ist, wenn Sie versuchen, OOP zu lernen, benutzen Sie Javascript nicht. Verwenden Sie eine Sprache, die besser zu den Konzepten passt. – scrappedcola

+1

Ja! Vor allem, wenn Sie etwas über klassenbasierte OOP lernen möchten, da das JS-Klassenschlüsselwort nicht wirklich klassenbasiertes OOP ist, sondern syntaktischer Zucker um prototyped-basiertes OOP. – Lux

+0

Vielen Dank für Ihre Antwort. Ich versuche nicht, OOP zu lernen, ich muss JavaScript verwenden, um das zu tun. – Cephou

Antwort

2

ist, wie es für Javascript funktioniert, verwenden Sie es mit Bedacht

class middle {  
    constructor(element) { 
    this.var1 = 1; 
    this.var2 = 2; 
    this.element = element; 
    } 
} 

class left extends middle { 
    constructor() { 
    // calls the constructor of middle 
    super("left_element") 
    } 
} 

var myLeft = new left() 
myLeft.var1 // -> 1 

Allerdings gibt es eine Menge Diskussionen ist, wenn es gut ist oder nicht, denn wie andere schon gesagt es ein syntaktischer Zucker auf top of the prototyping features von js ..

Persönlich benutze ich es nicht, in den meisten Fällen ist ein Objekt oder eine Funktion genug, um mit Javascript zu arbeiten.

In einigen Fällen müssen Sie jedoch mit Klassen arbeiten, also zu wissen, wie es funktioniert, ist keine schlechte Idee.

Verwandte Themen