--- (1) --- Extended (.) -> Extended -> Base -> Object --- (2) --- B { x: 1 } true --- (3) --- TypeError: Cannot assign to read only property 'prop' of object '#' at Y.foo (E:\Angular\JS\oop\Super.js:63:24) at Object. (E:\Angular\JS\oop\Super.js:73:7) at Module._compile (node:internal/modules/cjs/loader:1256:14) at Module._extensions..js (node:internal/modules/cjs/loader:1310:10) at Module.load (node:internal/modules/cjs/loader:1119:32) at Module._load (node:internal/modules/cjs/loader:960:12) at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12) at node:internal/main/run_main_module:23:47 1 --- (4) --- (.) -> Good -> Base1 -> Object (.) -> Object (.) -> SuperGood -> Base1 -> Object ReferenceError: Must call super constructor in derived class before accessing 'this' or returning from derived constructor at new Bad (E:\Angular\JS\oop\Super.js:92:16) at Object. (E:\Angular\JS\oop\Super.js:109:16) at Module._compile (node:internal/modules/cjs/loader:1256:14) at Module._extensions..js (node:internal/modules/cjs/loader:1310:10) at Module.load (node:internal/modules/cjs/loader:1119:32) at Module._load (node:internal/modules/cjs/loader:960:12) at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12) at node:internal/main/run_main_module:23:47