为什么控制台不显示从选择器返回的jQuery对象的方法?

时间:2015-10-20 20:35:26

标签: javascript jquery google-chrome console google-chrome-devtools

我知道如果我输入:

  

$( '主体');

我得到一个jQuery对象。但是在chrome的控制台上,我只会看到jQuery对象的内部数组,尽管可以像

那样访问jQuery方法
  

$( '主体')隐藏();

为什么控制台没有向我显示所有可访问的方法以及jQuery如何设法实现这种魔力?

如果只是因为这些方法是在原型上定义的,那么当我写这些行时怎么样:

function Person(){this.myProp = 'test'};
var person = new Person();
Person.prototype.proto = 'test2';

然后我检查铬的人我会看到:

__proto__: Person constructor: Person() proto: "test2"

但是在检查$('body');时,开发工具上是否显示 proto

1 个答案:

答案 0 :(得分:2)

方法在对象的原型上。默认情况下,控制台和console.log()都不显示原型上的项目。

如果您在Chrome调试器中检查jQuery对象,则可以展开原型,然后可以查看其中的所有方法。

所以,你所看到的只是所选择的控制台实现。它显示直接实例属性,而不是原型上的项目。

当我将此代码放入页面时:

function Person(){this.myProp = 'test'};
Person.prototype.proto = 'test2';

var person = new Person();
var jq = $("body");

然后,检查Chrome调试器中的personjq,我看到了:

enter image description here

显示两个对象上的` proto 属性。而且,如果我为jQuery对象扩展该属性,它确实显示了所有方法。