2017-11-24 2 views
3

Ich habe diese SituationJavascript Zugriff auf statische Kind Attribute

import assert from 'assert' 

class A { 
    static x = 0 

    static a() { 
     return A.x 
    } 
} 

class B extends A { 
    static x = 1 
} 

assert.equal(B.a(), 1) 

i statischen Wert in abgeleiteten Klasse von der Basisklasse in Js es6 retrive müssen. aber, ich kann nicht einen Weg finden,

die Behauptung wird mit

nicht
AssertionError [ERR_ASSERTION]: 0 == 1 

was ist der richtige Weg, dies zu tun?

  • dank
+1

Sie für 'A.x' fragen, welche anderen Wert, den es Ihnen geben könnte? Versuchen Sie 'this.x'. – Blorgbeard

+1

Es scheint zu funktionieren: https://repl.it/repls/IndolentNeighboringRhesusmonkey – Blorgbeard

+0

Sie können 'this' in einer statischen Methode verwenden, es bezieht sich auf die Klasse. Siehe: https://StackOverflow.com/A/34056740/369 – Blorgbeard

Antwort

1

Hier fordern Sie direkt für A.x. Sie sollten this.x anrufen, um A.x zu erhalten, wenn Sie auf einem Objekt der Art A sind und B.x erhalten, wenn Sie sich auf einem Objekt der Art B befinden.

nur folgende Änderungen vornehmen und es sollte funktionieren:

static a() { 
    return this.x; 
}