ईसीएमएस्क्रिप्ट पांचवें संस्करण (दिसंबर 200 9 को जारी) नए तरीकों का एक समूह प्रस्तुत करता है (विवरण के लिए this table देखें)। हालांकि, वहां अभी भी पुराने ब्राउज़र हैं जो उन नई विधियों को लागू नहीं करते हैं।ईसीएमएस्क्रिप्ट 5 (ईएस 5) -शिम कैसे प्रदान करें?
सौभाग्य से, एक सुविधाजनक स्क्रिप्ट (जावास्क्रिप्ट में लिखी गई) - ES5-shim - जो उन तरीकों को मैन्युअल रूप से उन वातावरणों में लागू करती है जहां वे मौजूद नहीं हैं।
हालांकि, मुझे यकीन है कि कैसे ES5-शिम प्रदान करने के लिए ... चाहिए मैं सिर्फ यह सभी ब्राउज़रों के लिए, "देने" इतनी तरह नहीं कर रहा हूँ:
<script src="es5-shim.js"></scipt>
या मैं केवल करने के क्रम में एक जांच में शामिल होना चाहिए "परेशान" उन ब्राउज़रों जो वास्तव में, यह की जरूरत है ताकि जैसे:।
<script>
if (!Function.prototype.hasOwnProperty('bind')) {
(function() {
var shim = document.createElement('script');
shim.src = 'es5-shim.js';
var script = document.getElementsByTagName('script')[0];
script.parentNode.insertBefore(shim, script);
}());
}
</script>
(मैं अगर एक ब्राउज़र सभी नए ECMAScript 5 तरीकों को लागू करता है की जाँच करने के Function.prototype.bind
उपयोग कर रहा हूँ संगतता तालिका जो मैं ऊपर लिंक के अनुसार, bind
है जब ईसीएम लागू करने की बात आती है तो "अंतिम गढ़" AScript 5 तरीकों।)
, इस शिम के लिए प्रभावी होने के लिए, यह से पहले निष्पादित किया जाना है अन्य सभी लिपियों, जिसका अर्थ है कि हम ऊपर उल्लेख किया स्क्रिप्ट तत्वों पेज के शुरू में शामिल करना चाहते हैं (में सिर, अन्य सभी एससीआरआईपीटी तत्वों से पहले)।
तो, क्या यह दूसरा उदाहरण ब्राउज़र पर ईसीएमएस्क्रिप्ट 5-शिम प्रदान करने का एक अच्छा तरीका होगा? इसे करने का कोई बेहतर तरीका है?
लेकिन उस ES5-संगत ब्राउज़र (नवीनतम आईई, क्रोम, फायरफॉक्स, जल्द ही ओपेरा) डाउनलोड करने और शिम जो वेब पेज को अनावश्यक रूप से धीमा निष्पादित करने के लिए मजबूर होना पड़ा । अगर मैं इसे थोड़ा जावास्क्रिप्ट चेक से टाल सकता हूं, तो मैं खुशी से ऐसा करूँगा। –
@ ŠimeVidas: यह 8kB है। उचित कैशिंग के साथ, चिंता करने की कोई बात नहीं है। – You
प्रदर्शन हिट नगण्य है, ES5 शिम पहले से ही अनावश्यक कोड निष्पादन से बचने के लिए क्या कर सकता है। – JaredMcAteer