दिलचस्प पोस्ट
शुद्ध सीएसएस आधारित ड्रॉपडाउन मेनू कैसे बनाऊँ? MySQL में एक क्वेरी निष्पादित करते समय केवल _full_group_by संबंधित त्रुटि Gradle हमेशा किसी भी कार्य से println करता है एसडी कार्ड से ईमेल भेजने की कोशिश कर रहा है I कोण 2 में प्रपत्र परिवर्तनों के लिए कैसे देखना है? मैं डायरेक्टरी में सभी पायथन इकाई परीक्षण कैसे चलाऊँ? link_to: पुष्टि करता है कि दो बार पॉपअप प्रदर्शित करता है आकृति अनुपात में फिट होने के लिए छवि दृश्य का आकार बदलना php मेल विशेष अक्षर utf8 JQuery के साथ चयनित तत्व पर क्लिक करें अनुकरण सी ++ कन्स प्रयोग स्पष्टीकरण दिए गए तत्वों के क्रमपरिवर्तनों को मुद्रित करने के लिए कार्यक्रम एएसपी.नेट पथ में टिल्ड (~) का उपयोग क्या करता है- D_XOPEN_SOURCE / क्या मतलब है? पर्ल झंडे -पी, -पीआई, -पी, -वा, -डी, -i, -टी?

प्रोटोटाइपिकल विरासत – लेखन

इसलिए मेरे पास इन 2 उदाहरण हैं, javascript.info से:

उदाहरण 1:

var animal = { eat: function() { alert( "I'm full" ) this.full = true } } var rabbit = { jump: function() { /* something */ } } rabbit.__proto__ = animal rabbit.eat() 

उदाहरण 2:

 function Hamster() { } Hamster.prototype = { food: [], found: function(something) { this.food.push(something) } } // Create two speedy and lazy hamsters, then feed the first one speedy = new Hamster() lazy = new Hamster() speedy.found("apple") speedy.found("orange") alert(speedy.food.length) // 2 alert(lazy.food.length) // 2 (!??) 

उदाहरण 2 से प्रारंभ करें: जब कोड speedy.found पहुंचता है। speedy.found , यह speedy.found कोई प्रॉपर्टी नहीं found , और इसलिए यह प्रोटोटाइप तक चढ़ता है और वहां उसे बदलता है। यही कारण है कि food.length दोनों के लिए food.length बराबर है, दूसरे शब्दों में उनके पास पेट होते हैं।

इस से मैं समझता हूं, जब एक नई संपत्ति को लिखना और जोड़ना है जो मौजूद नहीं है, तो दुभाषिया प्रोटोटाइप श्रृंखला तक ऊपर जाएंगे जब तक कि उसे संपत्ति नहीं मिलती, और फिर इसे बदलता है

लेकिन उदाहरण 1 में कुछ और होता है:
हम rabbit.eat चलाते हैं, जो rabbit.full बदलता है। पूरी full संपत्ति कहीं नहीं मिली है, इसलिए इसे प्रोटोटाइप श्रृंखला में ऊपर जाना चाहिए (वस्तु के लिए ??), और ठीक है, मुझे यकीन नहीं है कि यहां क्या होता है इस उदाहरण में rabbit से full संपत्ति बनाई जाती है और बदल जाती है, जबकि पहले उदाहरण में यह प्रोटोटाइप श्रृंखला चला जाता है क्योंकि यह संपत्ति नहीं खोज पा रहा है।

मैं उलझन में हूँ और ऐसा क्यों नहीं हो सकता है।

Solutions Collecting From Web of "प्रोटोटाइपिकल विरासत – लेखन"

प्रोटोटाइप किसी ऑब्जेक्ट के प्रत्येक इंस्टेंस के लिए शुरु नहीं होता है।

 Hamster.prototype.food = [] 

हम्सटर के हर उदाहरण उस सरणी को साझा करेंगे

अगर आपको प्रत्येक हामस्टर के लिए खाद्य संग्रहों के अलग-अलग उदाहरणों (और आप इस मामले में करते हैं) की आवश्यकता है, तो आपको इस उदाहरण पर संपत्ति बनाने की आवश्यकता है। उदाहरण के लिए:

 function Hamster() { this.food = []; } 

उदाहरण 1 के बारे में अपने प्रश्न का उत्तर देने के लिए, यदि प्रोटोटाइप श्रृंखला में कहीं भी संपत्ति नहीं मिलती है, तो यह लक्ष्य वस्तु पर संपत्ति बनाता है