是的,看起来很疯狂,但让我解释得更好。 在Jquery中我们使用例如$('div')返回一个Array Collection或类似的东西:[div#container,div#header,div #logo],神奇的是像push,length,pop这样的方法, join,concat是Array中的原始方法,不会显示给你。 我怎么能得到这种行为?我想像Jquery一样返回一个元素集合,但是使用我自己的方法(remove,appendHTML和其他方法)但不是默认的Array方法。 任何想法??
答案 0 :(得分:0)
尝试创建一个这样的对象数组:
var myObjectArray = [];
function addObject(id){
if(document.getElementById(id)!=null){
myObjectArray.push(document.getElementById(id));
return true;
}else{
return false;
}
}
function removeObject(id){
for(i in myObjectArray){
if(myObjectArray[i].getAttribute("id")==id){
delete myObjectArray[i];
return true;
}
}
return false;
}
function getObject(id){
for(i in myObjectArray){
if(myObjectArray[i].getAttribute("id")==id) return myObjectArray[i];
}
return null;
}
答案 1 :(得分:0)
您可以使用私有数组创建一个自定义对象,您可以在其中公开所需的方法
var yourCollection = function() {
var privateArray = [1, 2, 3, 4];
return {
myCustomPush: function(el) {
//use your custom push function or
privateArray.push(el);
},
size: function() {
return privateArray.length;
}
}
}();
yourCollection.myCustomPush("s");
alert(yourCollection.size());
答案 2 :(得分:0)
function() arrayLike {
var FINAL = {
length:0,
splice:function(){}
add:function(el){
return FINAL[FINAL.length++]=el;
};
}
}
现在我们可以声明这样的var:
var myarray = arrayLike();
myarray.add('some');
myarray.add('other');
神奇的是我们用Firebug编写(例如):
myarray.
只有add()方法会显示,但不是默认的Arrays方法(concat,push,pop ...) 任何改进此代码的想法,请发布!!或写信给我(请!)