Keiner der verlinkten Artikel beschreibt, warum that = this notwendig/sinnvoll sein soll. Hätte der Ersteller des Artikels JavaScript ausreichend verstanden, dann wüsste er, dass die Funktion Kampfpanzer nur ein Selbstreferenz auf sich selbst hat, nicht aber auf Spezialpanzer-Objekte. Würden die Member ordentlich dem Objekt angehangen werden, würden sie über den Aufruf die richtige selbst-Referenz zugewiesen bekommen. Dass "freie Funktionen" (keinem Objekt zugewiesen/keine Member), auch wenn sie im Konstruktor definiert wurden, sollte man ebenfalls wissen.
Auch wenn man es nicht mag, sind ein paar Dinge zu beachten, wenn man mit JavaScript arbeitet: Es gibt keine Einschränkungen der Sichbarkeit (private/protected), was genauso auch für diverse andere, dynamisch typisierte Sprachen gilt, wie bspw. Python. Wenn man es sich also so einfach wie möglich machen möchte, sollte man auch nicht probieren, diese auf andere Weise zu implementieren. Sollte man darauf aber nicht verzichten können, wird man sich der Closures und ggf. zusätzlicher Objekte bedienen müssen. Man sollte das aber nur dann probieren, wenn man sich ausreichend mit JavaScript auskennt.
JavaScript baut auf der Prototype-Chain für die Vererbung auf. Damit bspw. das Schlüsselwort instanceof richtig funktioniert. müssen die Prototypen _zwingend_ richtig gesetzt sein. Erstellt man aber Variablen und Funktionen im Scope des Konstruktors (mit Memberfunktionen, die darauf zugreifen -> Closure), dann sind die im Prototyp erzeugten Variablen und Methoden quasi statisch für alle abgeleiteten Objekte. (Der 2. Code des 1. Links hatte ein ähnliches Problem). Es lässt sich wahrscheinlich für alle Probleme etwas finden, wie man diese beheben kann, um "private" Member zu erhalten, allerdings halte ich es für einfacher, Konventionen festzulegen und diese einzuhalten (wie es auch bei Python der Fall ist).
Den 2. Link werde ich mir später mal ansehen...
Ich habe mir bisher keine JS-Alternativen angesehen, grundsätzlich dürften diese durchaus einen Blick wert sein. Es gibt allerdings noch weitere Varianten, wie CoffeScript o. ä. Wichtig zu beachten ist aber auch, wie gut man mit diesen auf bestehende JavaScriptFrameworks zugreifen kann, wie Feature-Detection aussieht (prüfen, ob bestimmte Funktionen definiert sind) etc.