var test = $();
test.push($('div')[0]);
這是有效的。任何想法爲什麼? 因爲push是一個數組方法,所以我不明白爲什麼在這種情況下可以使用任何想法?爲什麼push方法在jQuery對象上工作?
由於您可以使用.add(),是否有實際用途?
var test = $();
test.push($('div')[0]);
這是有效的。任何想法爲什麼? 因爲push是一個數組方法,所以我不明白爲什麼在這種情況下可以使用任何想法?爲什麼push方法在jQuery對象上工作?
由於您可以使用.add(),是否有實際用途?
他們從Array.prototype
借用.push()
。
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元素或另一個具有一個或多個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
是的,它幫助謝謝你,但即時通訊仍然困惑他們爲什麼這樣做。 – meo
@meo:這是一個免費的方法。他們希望在一組索引屬性的末尾添加一個項目,同時更新'.length',這就是.push()所做的。無需自己寫。 – user113716
是'something'只是任意JavaScript對象?結果是什麼? – BoltClock
@BoltClock我編輯了我的問題。 jquery的選擇得到擴展與div – meo