Một polyfill là một hình thái mà thay thế cuộc gọi ban đầu bằng lệnh gọi đến một cảnh báo.
Ví dụ: giả sử bạn muốn sử dụng đối tượng navigator.mediaDevices, nhưng không phải tất cả trình duyệt đều hỗ trợ điều này. Bạn có thể tưởng tượng một thư viện cung cấp một shim mà bạn có thể sử dụng như thế này:
<script src="js/MediaShim.js"></script>
<script>
MediaShim.mediaDevices.getUserMedia(...);
</script>
Trong trường hợp này, bạn rõ ràng gọi một shim thay vì sử dụng đối tượng hoặc phương pháp gốc. Mặt khác, mặt khác, thay thế các đối tượng và các phương thức trên các đối tượng gốc.
Ví dụ:
<script src="js/adapter.js"></script>
<script>
navigator.mediaDevices.getUserMedia(...);
</script>
Trong code của bạn, có vẻ như bạn đang sử dụng đối tượng các navigator.mediaDevices chuẩn. Nhưng thực sự, polyfill (adapter.js trong ví dụ) đã thay thế đối tượng này bằng một đối tượng riêng của nó.
Cái mà nó đã thay thế bằng một hình thái. Điều này sẽ phát hiện nếu tính năng này được hỗ trợ nguyên bản và sử dụng nó nếu nó được, hoặc nó sẽ làm việc xung quanh nó bằng cách sử dụng các API khác nếu nó không phải là.
Vì vậy, một polyfill là một loại shim "trong suốt". Và đây là những gì Remy Sharp (người đặt ra thuật ngữ) có nghĩa là khi nói "nếu bạn đã xóa tập lệnh chèn lấp, mã của bạn sẽ tiếp tục hoạt động mà không có bất kỳ thay đổi nào được yêu cầu mặc dù polyfill bị xóa".
Nguồn
2016-12-06 13:32:25
Bạn có thể kiểm tra để hiểu rõ hơn http://blogs.msdn.com/b/jennifer/archive/2011/08/04/html5-part-4-using-html5-while-retaining-support-for-older -browsers.aspx –
@ user3400622 Cảm ơn bạn đã liên kết, giải thích trong liên kết rất rõ ràng. –