Nếu bạn đã làm việc với JavaScript ở bất kỳ độ dài nào, bạn biết rằng Internet Explorer không triển khai chức năng ECMAScript cho Array.prototype.indexOf () [bao gồm cả Internet Explorer 8]. Đây không phải là một vấn đề lớn, bởi vì bạn có thể mở rộng chức năng trên trang của mình bằng mã sau đây.
Array.prototype.indexOf = function(obj, start) {
for (var i = (start || 0), j = this.length; i < j; i++) {
if (this[i] === obj) { return i; }
}
return -1;
}
Khi nào tôi nên thực hiện điều này?
Tôi có nên bọc nó trên tất cả các trang của mình bằng kiểm tra sau, kiểm tra xem hàm nguyên mẫu có tồn tại không và nếu không, hãy tiếp tục và mở rộng nguyên mẫu Array?
if (!Array.prototype.indexOf) {
// Implement function here
}
Hoặc kiểm tra trình duyệt và nếu đó là Internet Explorer thì chỉ cần thực hiện nó?
//Pseudo-code
if (browser == IE Style Browser) {
// Implement function here
}
Array.indexOf
bạn không đưa các chỉ số bắt đầu tiêu cực vào tài khoản. Xem triển khai ngăn chặn đề xuất của Mozilla tại đây: developer.mozilla.org/en/JavaScript/Reference/Global_Objects/
Array.prototype.indexOf
không phải là một phần của ECMA-262 / ECMAScript. Xem ecma-i Intl.org/publications/files/ECMA-ST/ECMA-262.pdf Có thể bạn đang nghĩString.prototype.indexOf
...