扩展对象导致jQuery错误

Extending Object causes jQuery error

本文关键字:jQuery 错误 对象 扩展      更新时间:2024-02-12

因此,我编写了一个函数来扩展对象,以计算其中有多少条目,因此它可以这样使用:

test = {"foo": "bar", "baz": 7, "darth": "maul"}
test.count()
=> 3

我这样写代码:

Object.prototype.count = function() {
  var count = 0, key;
  for (key in this) {
    if (this.hasOwnProperty(key)) {
      count++;
    }
  }
  return count;
}

这是我第一次尝试使用原型进行扩展,我从jQuery.js:中得到了这个错误

Uncaught TypeError: Object function () {
  var count = 0, key;
  for (key in this) {
    if (this.hasOwnProperty(key)) {
      count++;
    }
  }
  return count; 
} has no method 'replace'

stacktrace指向我在jQuery对象onLoad:上调用css的位置

$img.css({left: 20, top: 50});

我并不认为这条线有什么具体的东西,但我认为提供它可能很好。

我是不是做错了什么?

关于为什么扩展本机类型的原型是个坏主意的教训。:)

jQuery的某个地方,它测试一个通用对象是否存在一个名为count的属性,然后将其视为字符串。由于您现在已经使该属性始终存在,它找到了它,但它不是字符串(正如它所期望的那样),并破坏了代码。