Uncaught TypeError: у объекта нет метода exec

0

Я использую код ниже, и он работает хорошо, но когда я пытаюсь использовать JQuery одновременно, я получаю следующую ошибку, я читал некоторые сообщения, и я думаю, что проблема в том, что нет возможности расширить Object.prototype без проверки hasOwnProperty(), но я не знаю, как это решить, может кто-нибудь дать мне руку?

Код:

Object.prototype.clone = function () {
    var i, newObj = (this instanceof Array) ? [] : {};
    for (i in this) {
        if (i === 'clone') {
            continue;
        }
        if (this[i] && typeof this[i] === "object") {
            newObj[i] = this[i].clone();
        } else {
            newObj[i] = this[i];
        }
    }
    return newObj;
    };

Ошибка:

Uncaught TypeError: Object function () {
    var i, newObj = (this instanceof Array) ? [] : {};
    for (i in this) {
        if (i === 'clone') {
            continue;
        }
        if (this[i] && typeof this[i] === "object") {
            newObj[i] = this[i].clone();
        } else {
            newObj[i] = this[i];
        }
    }
    return newObj;
} has no method 'exec' 
  • 0
    На jsFiddle вы тоже получили ошибку?
  • 2
    Я бы предложил не помещать метод в Object.prototype . Вместо этого поместите его как метод в Object чтобы он не был унаследован, и передайте объект, который нужно клонировать, в качестве первого аргумента. Object.clone(foo)
Показать ещё 6 комментариев
Теги:
object
prototype
hasownproperty

1 ответ

0

Добавьте к вашему объекту clone следующую функцию:

Object.prototype.clone.exec=function() {
    //your codes
};

Ещё вопросы

Сообщество Overcoder
Наверх
Меню