起初,我以为它只是将obj [0],obj [1],obj [2]等分配给jQuery对象,然后再返回它,并且长度是手动分配的。但是没有,因为console.log记录的是数组而不是对象。
我快速浏览了jQuery源,但是由于我不熟悉jQuery,所以不容易破解它。 jQuery.makeArray
首先 pop ,但事实却与我要查找的相反,实际上您通过使用它失去了对象方法。
我的第一个猜测是先启动数组,然后将所有属性和方法从对象复制到该数组。
有jQuery源代码经验的人对此有明确的答案吗?
最佳答案
这就像创建一个新函数并为其分配一个新数组作为其原型(prototype)一样简单。
function ArrayLike() {}
ArrayLike.prototype = [];
因此,例如:
function ArrayLike() {}
ArrayLike.prototype = [];
ArrayLike.prototype.fromArray = function(arr) {
for(var i = 0; i < arr.length; i++)
this.push(arr[i]);
};
ArrayLike.prototype.foo = function() {
console.log("foo", this);
};
var a = new ArrayLike();
a.fromArray([1, 2]);
console.log(a);
a.foo();
http://jsfiddle.net/Xeon06/fUgaf/