Câu trả lời là khá nhiều có trên trang MDN bản thân:
"Nếu bạn chọn sử dụng thực hiện phần này, bạn phải không phụ thuộc vào những trường hợp hành vi lệch khỏi ECMA-262, 5th edition Với một số tuy nhiên, cần chú ý (và có lẽ với sửa đổi bổ sung cho phù hợp với nhu cầu cụ thể), việc thực hiện một phần này có thể là một cầu nối hợp lý cho đến khi ràng buộc() được triển khai rộng rãi theo đặc tả. "
Không có gì sai với MDN shim như vậy. Tuy nhiên, nếu bạn chọn sử dụng shim của mình, hãy đảm bảo rằng nó không thể bị ghi đè bởi các thư viện khác. Tôi đã có một vấn đề trong khi trước đây với Strophe làm điều đó và thay thế một shim với nhau.
Tôi có xu hướng sử dụng gạch dưới để bao gồm các nội dung như thế này nhưng có các tùy chọn khác như es5shim. Với dấu gạch dưới, bạn có một phương thức được gọi là (bạn đoán nó) '. Liên kết' và hoạt động hơi khác với shim của MDN (sử dụng lời gọi 'mới'). Dấu gạch dưới cũng có một phương pháp tuyệt vời được gọi là ' .partial' có thể hữu ích trong các tình huống mà bạn không muốn thay đổi giá trị của 'this' nhưng một phần áp dụng đối số.
Điểm tôi đang làm ở đây là thay vì cắt xén, có thể xem một thứ được bảo vệ/đóng gói trong thư viện. Cơ hội là bạn sẽ cần nhiều hơn một shim trong mọi trường hợp nếu bạn đang nhắm mục tiêu các trình duyệt như IE8.
Cuối cùng, và không quá quan trọng kiểm tra các bài kiểm tra hiệu suất tại địa chỉ: http://jsperf.com/browser-vs-es5-shim-vs-mdn-shim
bạn đã thử mã tương thích mà họ cung cấp trên trang MDN? https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Function/bind – Sebas
Có, và nó có vẻ hoạt động tốt. Nhưng tôi có thể chắc chắn rằng nó là trường hợp trong bất kỳ hoàn cảnh nào? – BAK
Không phải bất kỳ hoàn cảnh nào, nhưng phần lớn. – backdesk