मैंने कहीं पढ़ा है कि मूल वस्तुओं (String
, Number
, Array
, आदि) का विस्तार करने के लिए prototype
का उपयोग करना) एक बुरा विचार था। क्या ये सच है? क्यों या क्यों नहीं?देशी वस्तुओं को खराब करने के लिए प्रोटोटाइप का उपयोग कर रहा है?
उत्तर
मुझे नहीं लगता कि यह बुरा है। यदि आप रेल पर रूबी पर एक नज़र डालते हैं, तो बहुत सारी मूल वस्तुएं कस्टम कार्यक्षमता के साथ विस्तारित होती हैं और यह एक बहुत अच्छा ढांचा है।
क्या बुरा होगा यदि आप मूल वस्तुओं पर मौजूदा विधियों को बदल दें। इससे असुरक्षित परिणाम हो सकते हैं।
आह, ठीक है। हाँ, यह समझ में आता है। –
मैं देशी वस्तुओं के व्यवहार को विस्तार/संशोधित करने से स्पष्ट रहूंगा।
टीम प्रबंधन में विकास करते समय कम से कम समझ में आता है।
, बस क्योंकि, महीने बाद, एक और डेवलपर कोड का एक और स्वतंत्र लेखन के तुरंत बदल व्यवहार पहचान करने के लिए कहीं न कहीं दस्तावेज और पहले अपने कार्य शुरू करने से इसके बारे में पता किया जाता है जब तक नहीं जा रहा है।
इसके बजाय, मैं सुझाव encapsulating/"नाम स्थान" इस तरह के सभी कार्यक्षमता आईएनजी ऐसी है कि किसी को करने के लिए संशोधित कार्यों का उपयोग करने के लिए नहीं चुना है या हो सकता है।
इसके अलावा, देशी वस्तुओं और उनके तरीकों को अच्छी तरह से व्यापक मामलों के लिए जांच की जाती है। इसलिए आपको मूल कार्यक्षमता को संशोधित करने से पहले आप जो कर रहे हैं, उसके बारे में पूरी तरह से सुनिश्चित होना होगा।
JSConf 2011 से इस वीडियो को एंड्रयू Dupont द्वारा में इस बारे में एक महान चर्चा नहीं है। http://blip.tv/jsconf/jsconf2011-andrew-dupont-everything-is-permitted-extending-built-ins-5211542
असल बिंदु हैं:
- का विस्तार न करें
Object.prototype
- कुछ लोग बातें विस्तार करना चाहते हो सकता है, कुछ लोगों को
- नहीं है आप को पता है कि आप क्या कर रहे हैं की जरूरत है
- , दो पुस्तकालयों कि चीजें विस्तार उपयोग करें, क्योंकि यह बुरा
- प्रोटोटाइप का विस्तार मानक कार्यक्षमता जोड़ने के लिए लगभग हमेशा ठीक है हो सकता है मत करो।
- 1. जावास्क्रिप्ट में प्रोटोटाइप खराब हैं?
- 2. jQuery खराब अभ्यास में $() शॉर्टकट का उपयोग कर रहा है?
- 3. जावास्क्रिप्ट खराब अभ्यास में लेबल का उपयोग कर रहा है?
- 4. आपके पसंदीदा Mootools/प्रोटोटाइप देशी ऑब्जेक्ट प्रोटोटाइप क्या हैं?
- 5. एक दृश्य खराब बनाने के लिए '*' का उपयोग क्यों कर रहा है?
- 6. JSON.stringify प्रोटोटाइप मानों को क्रमबद्ध क्यों नहीं कर रहा है?
- 7. mysql ENUM का उपयोग एक खराब वास्तुकला समाधान का उपयोग कर रहा है?
- 8. रिक्त इंटरफेस का उपयोग खराब डिजाइन है?
- 9. नंबरफॉर्मेट अपवाद को खराब अभ्यास कर रहा है?
- 10. जावास्क्रिप्ट कन्स्ट्रक्टर में साइड इफेक्ट्स खराब अभ्यास का उपयोग क्यों कर रहा है?
- 11. एंड्रॉइड में Serializable का उपयोग कर खराब है?
- 12. क्या ऑब्जेक्ट पर संपत्ति घोषित करने के बजाए प्रोटोटाइप का उपयोग करने का कोई फायदा है?
- 13. Django खराब में थ्रेड स्थानीय का उपयोग क्यों कर रहा है?
- 14. आवरण वस्तुओं का उपयोग करना ठीक एक्सेल इंटरॉप साफ करने के लिए वस्तुओं
- 15. सी खराब अभ्यास में एक बूल के रूप में char का उपयोग कर रहा है?
- 16. संग्रह वस्तुओं का उपयोग करता है() मौजूदा वस्तुओं की जांच के लिए उपयोग करता है?
- 17. अपरिवर्तनीय वस्तुओं के लिए मौजूदा वस्तुओं का पुन: उपयोग करें?
- 18. जावा में स्ट्रक्चर खराब अभ्यास के रूप में कक्षा का उपयोग क्यों कर रहा है?
- 19. धागे को धीमा करने का सबसे अच्छा तरीका? नींद का उपयोग कर रहा है() ठीक है?
- 20. GSON का उपयोग कर पार्स और वस्तुओं
- 21. "आधार" खराब अभ्यास का उपयोग कर रहा है भले ही यह पठनीयता के लिए अच्छा हो सकता है?
- 22. क्या यह शून्य शैली के लिए NullPointerException का उपयोग करने के लिए खराब शैली है?
- 23. स्प्रिंग बीन के लिए प्रोटोटाइप प्रोटोटाइप क्या है?
- 24. खराब अभ्यास के रूप में स्थिर तरीकों तक पहुंचने के लिए कक्षा के उदाहरण का उपयोग कर रहा है?
- 25. KnockoutJS गणना गुणों के लिए प्रोटोटाइप का उपयोग
- 26. क्या वस्तुओं को शून्य करने के लिए सामान्य है?
- 27. पर्ल 5 के फ़ंक्शन प्रोटोटाइप खराब क्यों हैं?
- 28. त्रुटि प्रबंधन के लिए SQL सर्वर के GOTO का उपयोग करने के लिए खराब अभ्यास?
- 29. किसी ऑब्जेक्ट "खराब फॉर्म" के माध्यम से स्थिर विधियों को कॉल कर रहा है? क्यूं कर?
- 30. सी # 2.0 में कीवर्ड var खराब का उपयोग कर रहा है?
यह कुछ मूल्य के एक पूरी तरह से वैध सवाल है, imo है। इसे बंद नहीं किया जाना चाहिए। –
http://stackoverflow.com/faq#dontask का कहना है कि यह नहीं है। – vascowhite
मूल रूप से एक डुप्ली http://stackoverflow.com/questions/8859828/javascript-what-dangers-are-in-extending-array-prototype/8859941#8859941 –