我知道如果我输入:
$( '主体');
我得到一个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 ?
答案 0 :(得分:2)
方法在对象的原型上。默认情况下,控制台和console.log()
都不显示原型上的项目。
如果您在Chrome调试器中检查jQuery对象,则可以展开原型,然后可以查看其中的所有方法。
所以,你所看到的只是所选择的控制台实现。它显示直接实例属性,而不是原型上的项目。
当我将此代码放入页面时:
function Person(){this.myProp = 'test'};
Person.prototype.proto = 'test2';
var person = new Person();
var jq = $("body");
然后,检查Chrome调试器中的person
和jq
,我看到了:
显示两个对象上的` proto 属性。而且,如果我为jQuery对象扩展该属性,它确实显示了所有方法。