Less.js + IE8 = Object не поддерживает свойство или метод 'bind'

При выполнении кросс-браузерного тестирования (с использованием IE Edge в режиме IE8) страница не отображается правильно из-за ошибки в Less JS (v2.7.1). Журнал консоли:

SCRIPT438: Объект не поддерживает свойство или метод 'bind'. Файл: less.js, строка: 1896, столбец: 1

То же касается и минимизированной версии SCRIPT438: объект не поддерживает свойство или метод 'bind'. Файл: less.min.js, строка: 13, столбец: 27226

Я читал, что IE8 и ниже не поддерживают связывание, следовательно, проблема.

Может кто-нибудь предложить решение о том, как я могу обойти эту проблему без необходимости полностью сбросить Less JS (не вариант)?

1 ответ

Вы можете использовать полифилл для bindкак у MDN. Есть некоторые отличия от родного, как отмечено в ссылке.

if (!Function.prototype.bind) {
    Function.prototype.bind = function(oThis) {
       if (typeof this !== 'function') {
       // closest thing possible to the ECMAScript 5
       // internal IsCallable function
       throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable');
    }

    var aArgs   = Array.prototype.slice.call(arguments, 1),
        fToBind = this,
        fNOP    = function() {},
        fBound  = function() {
            return fToBind.apply(this instanceof fNOP
                   ? this
                   : oThis,
                   aArgs.concat(Array.prototype.slice.call(arguments)));
        };

    if (this.prototype) {
        // Function.prototype doesn't have a prototype property
        fNOP.prototype = this.prototype; 
    }
    fBound.prototype = new fNOP();

    return fBound;
};

}

Другие вопросы по тегам