【问题标题】:Uncaught TypeError: Object has no method 'exec'未捕获的类型错误:对象没有方法“执行”
【发布时间】:2013-10-06 17:53:54
【问题描述】:

我正在使用下面的代码,它运行良好,但是当我尝试同时使用 JQuery 时,我收到以下错误,我正在阅读一些帖子,我认为问题是不是可以在不检查 hasOwnProperty() 的情况下扩展 Object.prototype,但我不知道如何解决这个问题,有人可以帮帮我吗?

代码:

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' 

【问题讨论】:

  • 在 jsFiddle 你也有错误?
  • 我建议不要将该方法放在Object.prototype 上。而是将其作为方法放在Object 上,这样它就不会被继承,并将要克隆的对象作为第一个参数传递。 Object.clone(foo)
  • @Dvir:jsFiddle 跟什么有什么关系?
  • 尽量不要修改内置原型,尤其是对象和数组。这里的对象是几乎所有东西的基础,因此您扩展的内容也可用于 Array,但是您可以尝试使用 ecma5 对象定义属性并使该属性的可枚举为 false。试试这个小提琴jsfiddle.net/ywyXS
  • 感谢 PSL 修复了错误!

标签: javascript jquery object prototype hasownproperty


【解决方案1】:

将以下函数添加到您的克隆对象:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-05
    相关资源
    最近更新 更多