तो प्रोटोटाइप विरासत पर शास्त्रीय ओओपी शैली विरासत चुनने के कारण क्या हैं? असल में, मेरा मानना है कि कुछ ढांचे दृष्टिकोणों के संयोजन के "प्रकार" हैं। उदाहरण के लिए परजीवी संयोजन विरासत पैटर्न ले लो। यही वह है जो YAHOO.lang.extend कर रहा है।
यह प्रोटोटाइप और कन्स्ट्रक्टर चोरी के उत्तराधिकारी के लिए प्रोटोटाइप विरासत और एक सहायक कार्य का उपयोग करता है। वाह, यह जटिल लगता है ... अच्छी तरह से हाँ यह है - यहाँ मेरी कार्यान्वयन और उदाहरण के लिए परीक्षण है:
// Prototypal Inheritance
Object.prototype.inherit = function(p) {
NewObj = function(){};
NewObj.prototype = p;
return new NewObj();
};
// Paraphrasing of Nicholas Zakas's Prototype Inheritance helper
function inheritPrototype(subType, superType) {
var prototype = Object.inherit(superType.prototype);
prototype.constructor = subType;
subType.prototype = prototype;
};
function SubType(name, age) {
Parent.call(this, name);
this.age = age;
};
inheritPrototype(SubType, Parent);
SubType.prototype.getAge = function() {
return this.age;
};
मैं इस कोड के लिए एक परीक्षण है:
describe 'Parisitic Combination Inheritance'
it 'should use inheritPrototype (to call parent constructor once) and still work as expected'
sub = new SubType("Nicholas Zakas", 29)
sub.toString().should.match /.*Nicholas Zakas/
sub.getAge().should.eql 29
charlie = new SubType("Charlie Brown", 69)
charlie.arr.should.eql([1,2,3])
charlie.arr.push(999)
charlie.arr.should.eql([1,2,3,999])
sub.arr.should.eql([1,2,3])
sub.should.be_an_instance_of SubType
charlie.should.be_an_instance_of SubType
(sub instanceof SubType).should.eql true
(sub instanceof Parent).should.eql true
end
end
और निश्चित रूप से, अगर आप ' मेरे साहित्यों पर ध्यान दे रहे हैं जो आप देखते हैं: निकोलस जाकास, जिस लड़के से मुझे यह मिला;) इस के लिए बड़ी जीत: उदाहरण के काम (कुछ सौदा कुछ कहते हैं और मैं सहमत हूं); उदाहरण संदर्भ प्रकारों जैसे राज्यों को एरेज़ (एक biggie!) पर साझा नहीं करते हैं; अभिभावक कन्स्ट्रक्टर केवल एक बार बुलाया जाता है (एक बड़ी!)। My TDD JS Examples
बहस यहाँ खत्म नहीं होता:
Btw, मैं लोकप्रिय विरासत पैटर्न यहाँ के सबसे का उदाहरण है? मैं एक दिलचस्प कागज सारांशित करता हूं। संक्षेप में, कक्षा-आधारित विश्वव्यापी प्रोटोटाइप में से एक की तुलना में अधिक त्रुटिपूर्ण है।तो, हमें सावधान रहना होगा। सारांश यहां दिया गया है: http://carnotaurus.tumblr.com/post/3248631891/class-based-javascript-or-not – CarneyCode
आपने जो असली सवाल पूछ रहा था उसे उजागर किया :) बस आज अपना काम देखा। इस पर ध्यान दिलाने के लिए धन्यवाद। –