I step upon a weirdness exploring oriented object programming in JS.<p>In Python, I often use the following constructions:<p>https://pastebin.com/pmnxg0Ji<p>Translating in js we got:<p>https://pastebin.com/WpfDnVFX<p>Reading the doc, I understood that JS is initializing fields after the super is called. Hence, fields and methods behave differently with respect to inheritance.<p>The "correct" way to translate the Python code seems then to wrap the fields into a getter which gives actually the following:<p>https://pastebin.com/8ZYT6vDe<p>I wonder why JS is implementing such a semantic for fields. It sounds hacky to and feels like field shouldn't be mixed with inheritance at all but maybe I have overlooked something?