ES6 inheritance: uses `super` to access the properties of the parent class

Viewed 1158

Javascript's super keyword, when I run the code on Chrome, Babel, TypeScript, I got different results.

My question is which result is correct? And what part of specification defines such behavior?

The following code:

class Point {
  getX() {
    console.log(this.x); // C
  }
}

class ColorPoint extends Point {
  constructor() {
    super();
    this.x = 2;
    super.x = 3;
    console.log(this.x)   // A
    console.log(super.x)  // B
  }
  
  m() {
    this.getX()
  }
}

const cp = new ColorPoint();
cp.m();

The results:

  • Chrome 58.0.3029.110 64bit (V8 5.8.283.38)
  • Babel Repl 6.24.2
  • TypeScript 2.3

links:

3 Answers
Related