什么是“未捕获的TypeError:对象没有方法”

所以这是一个更普遍的问题。 关于为什么会出现这种错误的问题有数百个问题,但是我希望能够更深入地了解更快地解决这些问题。 或者只是学习新东西。 如果有人可以找到解释的参考,我将很乐意结束这个问题,但我找不到。

  1. 缺少什么?
  2. 是浏览器javascript编译器抛出错误还是jQuery?
  3. 什么是Object [object Object]?

缺少什么?

您正在尝试调用不存在的对象的方法。 例如:

 var foo = {}; foo.bar(); 

如果属性确实存在,但不是函数,则会出现类似于以下内容的错误:

TypeError: Property 'bar' of object #is not a function

注意:不同的浏览器会显示不同的错误消息,这一消息来自Chrome。


是浏览器javascript编译器抛出错误还是jQuery?

它是JavaScript运行时引擎。 它与jQuery无关。


什么是Object [object Object]?

[object Object][object Object]的默认字符串表示forms。 尝试:

 alert({}); 

您可以通过实现toString方法覆盖它:

 var foo = { toString: function() { return "I'm a boring object."; } }; alert(foo); 

[object Object]是对象的默认toString方法返回的内容。 当您看到此错误时,这意味着您正在尝试在没有具有该名称的属性的对象上调用方法,并且尚未覆盖其toString方法。

如果您看到此消息,则应使用firebug或其他一些调试工具检查它出现在哪一行,并尝试理解为什么调用对象上不存在消息中“method”之后的属性名称。

这与jQuery没有任何关系。 它只是在对象上不存在属性时抛出的默认错误。