2012-04-17 10 views
14

मैंने कहीं पढ़ा है कि मूल वस्तुओं (String, Number, Array, आदि) का विस्तार करने के लिए prototype का उपयोग करना) एक बुरा विचार था। क्या ये सच है? क्यों या क्यों नहीं?देशी वस्तुओं को खराब करने के लिए प्रोटोटाइप का उपयोग कर रहा है?

+9

यह कुछ मूल्य के एक पूरी तरह से वैध सवाल है, imo है। इसे बंद नहीं किया जाना चाहिए। –

+0

http://stackoverflow.com/faq#dontask का कहना है कि यह नहीं है। – vascowhite

+0

मूल रूप से एक डुप्ली http://stackoverflow.com/questions/8859828/javascript-what-dangers-are-in-extending-array-prototype/8859941#8859941 –

उत्तर

6

मुझे नहीं लगता कि यह बुरा है। यदि आप रेल पर रूबी पर एक नज़र डालते हैं, तो बहुत सारी मूल वस्तुएं कस्टम कार्यक्षमता के साथ विस्तारित होती हैं और यह एक बहुत अच्छा ढांचा है।

क्या बुरा होगा यदि आप मूल वस्तुओं पर मौजूदा विधियों को बदल दें। इससे असुरक्षित परिणाम हो सकते हैं।

+0

आह, ठीक है। हाँ, यह समझ में आता है। –

1

मैं देशी वस्तुओं के व्यवहार को विस्तार/संशोधित करने से स्पष्ट रहूंगा।

टीम प्रबंधन में विकास करते समय कम से कम समझ में आता है।

, बस क्योंकि, महीने बाद, एक और डेवलपर कोड का एक और स्वतंत्र लेखन के तुरंत बदल व्यवहार पहचान करने के लिए कहीं न कहीं दस्तावेज और पहले अपने कार्य शुरू करने से इसके बारे में पता किया जाता है जब तक नहीं जा रहा है।

इसके बजाय, मैं सुझाव encapsulating/"नाम स्थान" इस तरह के सभी कार्यक्षमता आईएनजी ऐसी है कि किसी को करने के लिए संशोधित कार्यों का उपयोग करने के लिए नहीं चुना है या हो सकता है।

इसके अलावा, देशी वस्तुओं और उनके तरीकों को अच्छी तरह से व्यापक मामलों के लिए जांच की जाती है। इसलिए आपको मूल कार्यक्षमता को संशोधित करने से पहले आप जो कर रहे हैं, उसके बारे में पूरी तरह से सुनिश्चित होना होगा।

5

JSConf 2011 से इस वीडियो को एंड्रयू Dupont द्वारा में इस बारे में एक महान चर्चा नहीं है। http://blip.tv/jsconf/jsconf2011-andrew-dupont-everything-is-permitted-extending-built-ins-5211542

असल बिंदु हैं:

  • का विस्तार न करें Object.prototype
  • कुछ लोग बातें विस्तार करना चाहते हो सकता है, कुछ लोगों को
  • नहीं है आप को पता है कि आप क्या कर रहे हैं की जरूरत है
  • , दो पुस्तकालयों कि चीजें विस्तार उपयोग करें, क्योंकि यह बुरा
  • प्रोटोटाइप का विस्तार मानक कार्यक्षमता जोड़ने के लिए लगभग हमेशा ठीक है हो सकता है मत करो।
संबंधित मुद्दे