एक पॉलीफ़िल एक शिम है जो कॉल के साथ मूल कॉल को एक शिम के साथ बदल देता है।
उदाहरण के लिए, मान लें कि आप navigator.mediaDevices ऑब्जेक्ट का उपयोग करना चाहते हैं, लेकिन सभी ब्राउज़र इसका समर्थन नहीं करते हैं। आप एक पुस्तकालय की कल्पना कर सकते हैं जो एक शिम प्रदान करता है जिसे आप इस तरह उपयोग कर सकते हैं:
<script src="js/MediaShim.js"></script>
<script>
MediaShim.mediaDevices.getUserMedia(...);
</script>
इस मामले में, आप मूल वस्तु या विधि का उपयोग करने के बजाय स्पष्ट रूप से एक शिम बुला रहे हैं। दूसरी ओर, पॉलीफ़िल, वस्तुओं और विधियों को मूल वस्तुओं पर बदल देता है।
उदाहरण के लिए:
<script src="js/adapter.js"></script>
<script>
navigator.mediaDevices.getUserMedia(...);
</script>
आपके कोड में, ऐसा लगता है जैसे आप मानक नेविगेटर का उपयोग कर रहे हैं। लेकिन वास्तव में, पॉलीफ़िल (उदाहरण में एडेप्टर) इस ऑब्जेक्ट को अपने स्वयं के साथ बदल दिया है।
इसने इसे बदल दिया है। यह पता लगाएगा कि क्या सुविधा मूल रूप से समर्थित है और यदि यह है तो इसका उपयोग करें, या यदि यह नहीं है तो अन्य एपीआई का उपयोग करके इसके चारों ओर काम करेगा।
तो एक पॉलीफिल एक प्रकार का "पारदर्शी" शिम है। और यह वही है जो रेमी शार्प (जिसने शब्द को गढ़ा है) का मतलब है जब " यदि आपने पॉलीफ़िल स्क्रिप्ट को हटा दिया है, तो आपका कोड काम करना जारी रखेगा, बिना किसी बदलाव के पॉलीफ़िल को हटाए जाने की आवश्यकता होती है" "।