私は初めてOO JavaScriptをやっています。継承とプロトタイプについて読んだことがありますが、それを解読したと思いました。この小さな例を発見するまで。
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();
}
}
私が次のことをした場合:
var foo = new TestObject2([1,2,3,4]);
foo.dothings();
var bar = new TestObject2([4,5,6]);
bar.dothings();
コンソールに次のように表示されると思います。
Testing Object Values, []
Testing Object Values, []
ただし、次のように表示されます。
Testing Object Values, []
Testing Object Values, [1,2,3,4]
問題はもちろんこの呼び出しです:
TestObject2.prototype = new TestObject();
__construct メソッドで手動でリセットする以外に、TestObject の親変数を「リセット」するにはどうすればよいですか?
TestObject2 が TestObject からすべての値/メソッドを継承し、「new」が PHP OO の方法で期待どおりに動作する別の方法はありますか? (JSがこれを行っている方法は、私の脳が大学から正しく提供されているかのように、本当に奇妙であると確信していますJavaはこの点でPHPのように機能します)