var test = $();
test.push( $('div')[0] );
这个代码可以正常工作,有什么原因吗? 由于 push 是一个数组方法,我不明白为什么在这种情况下能够正常工作,您有什么想法吗?
使用 .add() 也可以实现相同的效果,那么它是否有实际用途呢?
var test = $();
test.push( $('div')[0] );
这个代码可以正常工作,有什么原因吗? 由于 push 是一个数组方法,我不明白为什么在这种情况下能够正常工作,您有什么想法吗?
使用 .add() 也可以实现相同的效果,那么它是否有实际用途呢?
https://github.com/jquery/jquery/blob/1.6.2/src/core.js#L70
并且
https://github.com/jquery/jquery/blob/1.6.2/src/core.js#L296
例子:http://jsfiddle.net/HgS2R/1/
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
请注意,您自定义构造函数的实例与实际的数组行为不完全相同。
编辑:
关于您问题中的编辑,.push()
不等同于 .add()
。
.push()
方法是将 DOM 元素添加到现有的 jQuery 对象中。
.add()
方法可以接受一个 DOM 元素或另一个具有 1 个或多个 DOM 元素的 jQuery 对象,并返回一个新的 jQuery 对象,其中包含新添加的元素。
它更像是一个 .concat()
方法。
// 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
.length
,这就是.push()
所做的。不需要编写自己的方法。 - user113716
something
是任意的JavaScript对象吗?结果是什么? - BoltClock