Vererbung in Javascript, Variablen im "Eltern"

Ich mache OO Javascript zum ersten Mal. Ich habe über Vererbung und Prototyp gelesen und dachte, ich hätte es geknackt. Bis ich dieses kleine Beispiel entdeckt habe.

function TestObject(data)
{
    this.test_array = [];
    this.clone_array = [];

    this.dosomestuff = function()
    {
        for(var i=0; i<this.test_array.length; i++)
        {
            this.clone_array[i]=this.test_array[i];
        }
    }   

    this.__construct = function(data)
    {
        console.log("Testing Object Values" ,this.clone_array);
        this.test_array = data;
    };
}

TestObject2.prototype = new TestObject();

function TestObject2(data)
{
    this.__construct(data);
    this.dothings = function()
    {
        this.dosomestuff();
    }
}

Wenn ich Folgendes mache:

var foo = new TestObject2([1,2,3,4]);
foo.dothings();
var bar = new TestObject2([4,5,6]);
bar.dothings();

ch würde erwarten, dass die Konsole zeigt:

Testing Object Values, []
Testing Object Values, []

Wie auch immer es zeigt:

Testing Object Values, []
Testing Object Values, [1,2,3,4]

Das Problem ist natürlich dieser Aufruf:

TestObject2.prototype = new TestObject();

Wie kann ich die übergeordneten Variablen in TestObject zum "Zurücksetzen" bringen, ohne sie manuell in der __construct-Methode zurückzusetzen?

Ist es eine andere Möglichkeit von TestObject2, alle Werte / Methoden von TestObject zu erben und sich "neu" so zu verhalten, wie ich es von PHP OO gewohnt bin? (Ich bin sicher, dass die Art und Weise, wie JS dies tut, wirklich seltsam ist, als ob mein Gehirn mir von der Universität Java aus richtig dient, funktioniert in dieser Hinsicht wie PHP.)

Antworten auf die Frage(6)

Ihre Antwort auf die Frage