【发布时间】:2016-01-19 16:26:18
【问题描述】:
我知道如果我输入:
$('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?
【问题讨论】:
-
jQuery 方法在 prototype 上,而不是在每个单独的对象上。
-
$('body')返回一个继承自$.fn的对象。如果您使用控制台检查它,您将看到一个名为__proto__或[[Prototype]]或类似名称的条目。 -
@Oriol - 实际上我一直在寻找这样的东西,但自己尝试一下 - $('body') 只返回数组。 Chrome 不显示除此之外的任何其他内容?
-
@BornToCode 他们搞砸了 Chrome 的控制台。最好使用 Firefox 的。
$('body')返回一个类似数组的对象,它不是数组,它通过内部 [[Prototype]] 从$.fn继承。编辑:改用console.log($('body'))。
标签: javascript jquery google-chrome console google-chrome-devtools