Employee.prototype = Object.create(Person.prototype);
और
_.extend(Employee.prototype, Person.prototype);
दोनों इसी तरह के परिणाम (उत्पादन) देते हैं, लेकिन अंडरस्कोर विधि के बीच अंतर करने के लिए Person.prototype जोड़ने के लिए लगता है कर्मचारी.कॉन्स्ट्रक्टर.प्रोटोटाइप, और यहाँ और वहां बहुत सारी चीज़ें छोड़ दें, क्यों?
शुद्ध जे एस
underscoreJS
_.extend
का एक अच्छा पक्ष प्रभाव मैं आसानी से एकाधिक वंशानुक्रम क्या कर सकते हैं: की तरह यह does not भी प्रोटोटाइप श्रृंखला लंबे समय तक बना रहा है। ..
_.extend(Employee.prototype, Person.prototype);
_.extend(Employee.prototype, {
doSomething: function() {
return "hi ...";
}
});
लेकिन ...
क्यों 2 SayHi और DoSomething कार्यों है? (वास्तव में यह वही है जब मैं केवल 1 विस्तार करता हूं)।
एक और अंतर '_.extend'' constructor.prototype' ('.extend' 'नहीं बढ़ाता है? क्या यह वही है"? उनके अलावा विभिन्न स्थानों में? –
'_.extend' पहले ऑब्जेक्ट को पारित करता है, इसलिए, मेरे उदाहरण में, 'बी' छूटा रहता है, लेकिन 'ए' वास्तव में' बी' द्वारा बढ़ाया जाता है। '_.extend ({}, ए, बी)', 'ए' और' बी' में छूटे रहेंगे, और '{}' यह उनके गुणों द्वारा बढ़ाया गया है। – rdiazv
ध्यान दें कि यदि आप इसे इस तरह से करते हैं, यानी '_.extend (कर्मचारी.प्रोटोटाइप, व्यक्ति.प्रोटोटाइप);', 'नए' के साथ बनाए गए किसी भी उदाहरण से आपको 'कर्मचारी' वापस मिल जाएगा, और कर्मचारी एक नहीं होगा 'व्यक्ति', यानि 'नया कर्मचारी() व्यक्ति का उदाहरण' झूठा 'होना चाहिए। – user3743222