Thanks for responding Jacob!
However I think I know where our disconnect is now. You are comparing Javascript with the programming design of a Strongly Typed Classical Inheritance language. Because of that I have to ask what a “True Class” as you define it in a Dynamically Typed Pointed Prototype language then?
If we change the “Say it with me” section to say that “There are no Classical Inheritance Classes in Javascript” then I’d be a happy camper ;-)
Pointed Prototype languages are however designed differently than Classical Inheritance languages and other Prototype languages. The delegation model is not at all typed to the specific constructor if the language allows you to change the delegation pointer:
var a = {0: ‘test’, length: 1}
a.__proto__ = Array.prototype
a.forEach(console.log)
console.log(a.toString())
a.__proto__ = Object.prototype
console.log(a.toString())
console.log(a.forEach !== undefined ? console.log('It no longer can delegate a forEach function' : 'It can deligate a forEach function')
a.__proto__ = Array.prototype
To do the same in a Classical Inheritance, Strongly Typed language:
Array a = new Array('test');
a.foreach(System.out.println);
System.out.println(a.toString());
Object b = new Object.fromArray(a);
System.out.println(b.toString());
a = Array.fromObject(b);
Because I have a Strongly Typed language in the second example I need an intermediate pointer, but Dynamically Typed Classical Inheritance model languages do exist, just like non pointed Prototype languages that don’t allow what I did in the first code block exist too.
Because Javascript is a Dynamically Typed Pointed Prototype based language the programming paradigm is very different from what most people have experience with. You are attempting to mix the Strongly Typed Classical Inheritance programming model with Javascript. It’s like calling a Granny Smith Apple an Orange. One is a very specific species being related to a completely different domain to borrow the terms from Biology.
After all just because two langauges are similar doesn’t mean they are the same.
Jusqu’à plus tard, Jacob!
Or another similar, but completely different way:
Hasta más tarde, Jacob!