jQuery + exnding Object.prototype = «c.replace не является функцией»

Я использую jQuery 1.5 в своем проекте с открытым исходным кодом, и в моем собственном коде Javascript также присутствует следующая строка:

/**
 * Object.isEmpty()
 *
 * @returns {Boolean}
 */
Object.prototype.isEmpty = function ()
{
    /**
     * @deprecated Since Javascript 1.8.5
     * @see https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object
     */
    if ( this.__count__ !== undefined )
    {
        return this.__count__ === 0 ? true : false;
    }

    /* Less-aesthetic method, if above method fails */
    for ( var property in this )
    {
        if ( this.hasOwnProperty(property) )
        {
            return false;
        }
    }
    return true;
};

, которая просто расширяет Object.prototype, добавляя метод isEmpty () к нему [который проверяет, пуст объект или нет). Из-за этого добавления я получаю ошибку «c.replace не функция» в моей консоли Firebug; и мои исследования в Интернете привели меня к сообщению об ошибках jQuery , где я «узнал», что расширение Object.prototype не только нарушает jQuery, но и является плохой практикой кодирования. У меня вопрос: почему?

5
задан Shahriyar Imanov 20 February 2011 в 09:57
поделиться