Javascript 为什么push方法在jQuery对象上工作?

Javascript 为什么push方法在jQuery对象上工作?,javascript,jquery,Javascript,Jquery,这很有效。知道为什么吗? 既然push是一种数组方法,我不明白为什么在这种情况下会起作用,你知道吗 因为你可以使用.add()?他们从数组.prototype借用.push(),所以它有实际用途吗 及 示例: var MyObj=function(){}; MyObj.prototype.push=Array.prototype.push; var inst=新的MyObj; 仪器推力(“测试”); 文档写入(inst[0]+''+inst.length);//测试,1 请注意,自定义构造

这很有效。知道为什么吗? 既然push是一种数组方法,我不明白为什么在这种情况下会起作用,你知道吗

因为你可以使用.add()?

他们从
数组.prototype
借用
.push()
,所以它有实际用途吗

示例:

var MyObj=function(){};
MyObj.prototype.push=Array.prototype.push;
var inst=新的MyObj;
仪器推力(“测试”);
文档写入(inst[0]+'
'+inst.length);//测试,1
请注意,自定义构造函数的实例的行为不会与实际数组相同


编辑:

关于问题中的编辑,
.push()
.add()
不同

.push()
方法用于向现有jQuery对象添加DOM元素

.add()
方法可以接受一个DOM元素,或另一个包含1个或多个DOM元素的jQuery对象,并返回一个添加了新元素的新jQuery对象


它更像是一个
.concat()
我检查了源代码并找到了这些代码块(带有注释)。不确定他们是否回答了您的问题:

var MyObj = function(){};
MyObj.prototype.push = Array.prototype.push;

var inst = new MyObj;

inst.push( "test" );

document.write( inst[ 0 ] + '<br>' + inst.length );  // test, 1

就是任意的JavaScript对象吗?结果如何?@BoltClock我已经编辑了我的问题。jquery选择被divYes扩展了。谢谢,但是我仍然不明白他们为什么这么做。@meo:这是一个免费的方法。他们希望在更新
.length
时,在一组索引属性的末尾添加一个项,而
.push()
就是这样做的。不需要自己写。
var MyObj = function(){};
MyObj.prototype.push = Array.prototype.push;

var inst = new MyObj;

inst.push( "test" );

document.write( inst[ 0 ] + '<br>' + inst.length );  // test, 1
// Save a reference to some core methods
toString = Object.prototype.toString,
hasOwn = Object.prototype.hasOwnProperty,
push = Array.prototype.push,
slice = Array.prototype.slice,
trim = String.prototype.trim,
indexOf = Array.prototype.indexOf,
// For internal use only.
// Behaves like an Array's method, not like a jQuery method.
push: push,
sort: [].sort,
splice: [].splice