среда, 20 ноября 2013 г.

JavaScript indexOf в Internet Explorer 8 и ниже

Модуль JavaScript indexOf для работы в Internet Explorer 8 и ниже совместно с Require JS.

Файл ie8indexof.js

define([], function() {
 
        // Добавление метода indexOf для Internet Explorer 6-8
        if (!Array.prototype.indexOf) {
            Array.prototype.indexOf = function (searchElement /*, fromIndex */ ) {
                'use strict';
                if (this == null) {throw new TypeError();}
                var n
                    , k
                    , t = Object(this)
                    , len = t.length >>> 0;
                if (len === 0) {return -1;}
                n = 0;
                if (arguments.length > 1) {
                    n = Number(arguments[1]);
                    if (n !== n) { // shortcut for verifying if it's NaN
                        n = 0;
                    } else if (n !== 0 && n !== Infinity && n !== -Infinity) {
                        n = (n > 0 || -1) * Math.floor(Math.abs(n));
                    }
                }
                if (n >= len) {return -1;}
                for (k = n >= 0 ? n : Math.max(len - Math.abs(n), 0); k < len; k++) {
                    if (k in t && t[k] === searchElement) {return k;}
                }
                return -1;
            };
        }

    }
);

Использование в файле index.js

require.config({
    paths: {
        ie8indexof: 'ie8indexof'
    }
});

define(['ie8indexof'], function() {

    console.log([1,2,3].indexOf(2));

});

Комментариев нет:

Отправить комментарий