एक बहुत ही सामान्य परिदृश्य के उदाहरण में, जहां हमें तत्वों की एक पूरी कक्षा की शैली बदलने की आवश्यकता है, हमारे पास एक (सरलीकृत और सामान्यीकृत) कोड है जो इस तरह दिखता है:तत्वों की पूरी कक्षा पर जावास्क्रिप्ट कुशल शैली परिवर्तन
var elements = document.getElementsByTagName('div');
for (var i = 0; i < elements.length; i++)
if (elements[i].className == 'HideMe')
elements[i].style.visibility = 'hidden';
यह दस्तावेज़ से सभी div
तत्वों हो जाता है, उन के माध्यम से लूप होता है, और लोगों को है कि वर्ग "HideMe" की दृश्यता को "छिपा" बदल जाता है। दूसरी ओर, यह कोड:
document.innerHTML.replace(/class="HideMe"/mg, 'class="HideMe" style="visibility: hidden"');
कक्षा "HideMe" श्रेणी में सभी चीज़ों के लिए अदृश्यता शैली डालेगा। मैं JavaScript
पर नया हूं, और मुझे गलत मत समझो, लेकिन हर उदाहरण, मैंने जो भी ट्यूटोरियल देखा है, वह पहली विधि सिखाता है। एक-लाइनर, एक एकल फ़ंक्शन कॉल नहीं, एक अधिक बुद्धिमान द्वारा बनाई गई प्रतिस्थापन एल्गोरिदम, if
कथन के किसी भी प्रकार के लूप के मुकाबले तेज़ और कम संसाधन-गहन होना चाहिए?
document.innerHTML.replace('id="foo"', 'id="bar"');
के बजाय: सवाल वास्तव में अधिक सामान्य से एक है, ऐसा क्यों नहीं है
document.getElementById('foo').id = 'bar';
निरीक्षण कोड बिल्कुल ही है, लेकिन प्रदर्शन के लिए, मैं शायद यह परिवर्तन करने के लिए की आवश्यकता होगी हजारों तत्वों की शैली ताकि मैं किसी भी महत्वपूर्ण अंतर को माप सकूं। क्या कोई अच्छा, अच्छी तरह से तर्क दिया गया कारण है कि हमें दूसरे तरीके से एक विधि का पक्ष क्यों लेना चाहिए?
ध्यान दें कि string.prototype.replace विनाशकारी नहीं है, यह एक * नया * स्ट्रिंग देता है ... और हालांकि मैंने इसे perfed नहीं किया है, मैं कल्पना नहीं कर सकता कि पूरे डोम को दो नोड्स बदलने से अधिक प्रदर्शन करने वाला है। .. –
लाइनों की संख्या दक्षता का एक बहुत अच्छा उपाय नहीं है। ध्यान दें कि रेगेक्स इंजन कोड # 1 की तुलना में हुड के नीचे बहुत अधिक लूप और ifs का उपयोग करता है। – JJJ