2016-06-24 6 views
0

Ich bin nicht klar über Klassenausdrücke und Klassendeklarationen. Bitte hilf mir, das Unterschiedliche zwischen ihnen zu verstehen.Klassendeklarationen und Klassenausdrücke in ES6

Dank

+1

Kennen Sie den Unterschied zwischen Funktionsdeklarationen und Funktionsausdrücken? Derselbe Unterschied (außer Klassen werden nie gehisst). –

Antwort

2

Es ist relativ einfach.

In "Class Expressions", auf eine Variable der Klasse Objekt NamedFoo wird Foo, wie so genannt, zugeordnet:

Objekt
var Foo = class NamedFoo { 
    constructor() {} 
    whoIsThere() { 
    return NamedFoo.name; 
    } 
} 

In "Klassendeklarationen", die Klasse NamedFoo selbst allein erklärt wird, so wie:

class NamedFoo { 
    constructor() {} 
    whoIsThere() { 
    return NamedFoo.name; 
    } 
} 

Der Unterschied hier auch sein, dass, wenn es eine „Klasse-Erklärung“ ist, können Sie die Klasse verweisen können NamedFoo unter Verwendung jedoch, wenn es sich um eine „Klasse Exp ist In diesem Fall können Sie die Klasse nur anhand der Variablen referenzieren, der sie zugewiesen wurde, in diesem Fall Foo.

Ich hoffe, dass hilft!

+2

Es könnte sich lohnen, klarzustellen, dass die Variablenzuweisung nichts mit dem Klassenausdruck selbst zu tun hat. Es ist nur ein Anwendungsfall, in dem ein Klassenausdruck auftreten kann. Wie der Name schon sagt, kann ein Klasse * Ausdruck * überall dort verwendet werden, wo ein Ausdruck verwendet wird. Z.B. 'foo (Klasse {})'. –

+0

@FelixKling hat einen festen Punkt, "Klassenausdrücke" sind tatsächlich nicht nur an Variablenzuweisungen gebunden. –