2012-06-27 12 views
7

कहां जोड़ना है मैं वर्तमान में टाइटेनियम स्टूडियो में जावास्क्रिप्ट (कॉमनजेएस) का उपयोग कर रहा हूं और प्रोटोटाइप के बारे में एक सवाल है। मान लीजिए कि मैं मौजूदा वर्ग में एक नया फ़ंक्शन जोड़ना चाहता हूं। उदाहरण के लिए:स्ट्रिंग प्रोटोटाइप

String.prototype.trim = function() { 
    return this.replace(/^\s+|\s+$/g,""); 
} 

सबसे उपयुक्त स्थान जहां मुझे यह कोड जोड़ना चाहिए, तो यह तुरंत सभी कक्षाओं के लिए उपलब्ध हो गया?

अग्रिम धन्यवाद।

उत्तर

8

ठीक है, मैं सबसे अच्छा जवाब मिला (इवान स्कुगर द्वारा) और मैं इसे यहां साझा करना चाहता हूं जिसके साथ एक ही प्रश्न है। आपकी सहायता के लिए धन्यवाद.

"सामान्य रूप से देशी प्रोटोटाइप का विस्तार करना अच्छा विचार नहीं है। इस विशेष मामले में, यह किसी अन्य वातावरण में कोई समस्या नहीं होनी चाहिए, लेकिन कॉमनजे का उपयोग करके, यह एक समस्या है क्योंकि प्रत्येक कॉमनजे मॉड्यूल नया जेएस है संदर्भ, जिसका अर्थ है, जेएस पर्यावरण साफ़ करें। इसलिए, पर्यावरण के साथ जो कुछ भी आप करते हैं (जैसे मूल प्रोटोटाइप का विस्तार) अन्य मॉड्यूल पर दिखाई नहीं देगा। इसके कारण, सबसे अच्छा है "सहायक" मॉड्यूल को सहायक कार्यों के साथ लिखना और " "कहीं भी आपको इसकी आवश्यकता है" की आवश्यकता है।

//utils.js 
exports.trim = function(str) { 
    return str.replace(/^\s+|\s+$/g,""); 
}; 

- इवान Škugor

4

बस यह सुनिश्चित कर लें कि जो भी कोड कोशिश करने जा रहा है और इसका उपयोग करने से पहले इसे परिभाषित किया गया है, और आप सेट हो जाएंगे!

+0

आपका जवाब शॉन के लिए धन्यवाद। लेकिन क्या इस पर कोई सम्मेलन नहीं है कि मुझे यह कैसे/कहाँ करना चाहिए? – junior

+0

यदि आपके पास ऐसी लाइब्रेरी है जिसका उपयोग आप पूरे स्थान पर करते हैं, तो आप इसे हमेशा वहां रख सकते हैं। मैं सामान्य रूप से उन कार्यों को परिभाषित करता हूं जो चीजों को साफ और साफ रखने के लिए, जिसमें भी लाइब्रेरी शामिल है, के शीर्ष पर अंतर्निर्मित कक्षाओं में शामिल होते हैं। वैसे ही जैसे मैं सीएसएस फ़ाइल के शीर्ष पर HTML टैग के सीएसएस विशेषताओं को परिभाषित करता हूं, और कक्षाएं/आईडी के बाद। –

5

आपका उदाहरण, उपयोग करने के लिए एक अच्छा एक है क्योंकि अधिकांश ब्राउज़र अपने स्वयं के ट्रिम विधि है, तो यह अपने खुद के जोड़ने से पहले सबसे अच्छा देशी के लिए परीक्षण करने के लिए है:

String.prototype.trim= String.prototype.trim || function(){ 
    return this.replace(/^\s+/, '').replace(/\s+$/, ''); 
} 
संबंधित मुद्दे