में चर, मैं पहली बार ओओ जावास्क्रिप्ट कर रहा हूं। मैंने विरासत और प्रोटोटाइप के बारे में पढ़ा है और सोचा है कि मैंने इसे तोड़ दिया था। जब तक मैंने इस छोटे से उदाहरण की खोज नहीं की।जावास्क्रिप्ट में विरासत, "पैरेंट"
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();
}
}
अगर मैं निम्न कार्य करें:
Testing Object Values, []
Testing Object Values, []
हालांकि यह पता चलता है:
Testing Object Values, []
Testing Object Values, [1,2,3,4]
की समस्या है
var foo = new TestObject2([1,2,3,4]);
foo.dothings();
var bar = new TestObject2([4,5,6]);
bar.dothings();
मैं कंसोल दिखाने के लिए उम्मीद करेंगे पाठ्यक्रम यह कॉल:
TestObject2.prototype = new TestObject();
मैं टेस्टऑब्जेक्ट में मूलभूत चर को __construct विधि में मैन्युअल रूप से रीसेट करने के अलावा "रीसेट" करने के लिए कैसे प्राप्त करूं?
क्या टेस्टऑब्जेक्ट से सभी मूल्यों/विधियों को विरासत में लाने के लिए TestObject2 का एक और तरीका है और "नया" व्यवहार करने के लिए जैसा कि मैं एक PHP ओओ तरीके से अपेक्षा करता हूं? (मुझे यकीन है कि जेएस ऐसा कर रहा है, वास्तव में वास्तव में अजीब है जैसे कि मेरा दिमाग मुझे विश्वविद्यालय जावा से सही तरीके से सेवा करता है जैसे इस संबंध में PHP)
डेमो यहां: http://jsbin.com/olino3 – johnwards