दिलचस्प पोस्ट
संग्रहीत कार्यविधि जो MYSQL में 7 दिनों से पुराने पंक्तियों को स्वचालित रूप से हटाएं रिवर्स इंजीनियरिंग से निष्पादन योग्य रक्षा? टेस्ट के लिए इकाई फ़्रेमवर्क 4.1 की नकली डीबीसीटीन्टेक्स जावा स्क्रिप्ट में दो चर कैसे स्वैप करें विंडोज पर एफसीएनटीएल विकल्प सी # के प्रयोग से, यह कैसे पता चलता है कि किस प्रक्रिया ने एक फाइल लॉक की है? यह जांचते हुए कि क्या स्ट्रिंग XXXX के साथ शुरू होती है मैं कैसे अच्छा / सही पैकेज __init__.py फ़ाइलें लिख सकता हूँ क्या जावा से कई मान प्राप्त करने के लिए सुरक्षित है? परिवर्तन और क्लिक करें घटना के चेकबॉक्स के बीच jQuery के अंतर सेकंड्स को एचएच: एमएम: टी एसक्यूएल का उपयोग कर एसएसएल कैसे परिवर्तित करें क्या कोई कारण Image.FromFile एक आउटफाईमेरी अपवाद को एक अवैध छवि प्रारूप के लिए फेंकता है? ggplot2 अप्रयुक्त स्तर बारप्लोट रखें फ़ॉर्म भेजने त्रुटि, फ्लास्क एक्सएमएलएन = "…" प्राप्त किए बिना एक्सएमएल को किसी वस्तु को क्रमबद्ध कैसे करें?

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

इसलिए मेरे पास इन 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 संपत्ति बनाई जाती है और बदल जाती है, जबकि पहले उदाहरण में यह प्रोटोटाइप श्रृंखला चला जाता है क्योंकि यह संपत्ति नहीं खोज पा रहा है।

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

वेब के समाधान से एकत्रित समाधान "प्रोटोटाइपिकल विरासत – लेखन"

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

 Hamster.prototype.food = [] 

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

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

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

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