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

Why console don't show methods of jQuery object returned from selector?

我知道如果我输入:

$('body');

我得到一个 jQuery 对象。然而,在 chrome 的控制台上,我只会看到 jQuery 对象的内部数组,尽管事实上 jQuery 方法可以像

一样访问

$('body').hide();

为什么控制台不向我显示所有可访问的方法,jQuery 是如何做到这一点的?

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

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

然后我检查 chrome 中的人 我会看到:

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

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

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

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

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


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

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

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

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

这两个对象都显示了 `proto 属性。而且,如果我为 jQuery 对象展开 属性,它确实会显示所有方法。