是的,看起來很瘋狂,但讓我更好地解釋。我們使用例如$('div')它返回一個數組集合或類似這樣的東西:[div#container,div#header,div#logo],神奇的是,像push,length,pop ,連接,來自Array的原始方法的concat不會顯示給你。 我怎樣才能得到這種行爲?我想像Jquery一樣返回元素集合,但是使用我自己的方法(remove,appendHTML和其他),但不是默認的Array方法。 任何想法?自己實現Javascript中的數組對象
回答
function() arrayLike {
var FINAL = {
length:0,
splice:function(){}
add:function(el){
return FINAL[FINAL.length++]=el;
};
}
}
現在我們可以宣佈像這樣的變體:
var myarray = arrayLike();
myarray.add('some');
myarray.add('other');
而神奇的是,我們在Firebug寫(例如):
myarray.
只有add()方法會告訴你,但不是默認陣列方法(concat,則推,流行...) 任何改進此代碼的想法,請發佈它!或寫信給我(請!)
嘗試創建一個對象數組是這樣的:
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;
}
這個想法從來沒有在我的likeArray.some()中顯示默認數組函數(concat,pop,push ...),但是當我編寫likeArray它必須顯示像['一些','元素','另一個'] – 2012-03-22 03:27:42
閱讀相關文章我有一個想法...這是怎麼回事:功能likeArray(){ var FINAL = { length:0, splice:function(){ }, add:function (el){ \t \t \t return FINAL[FINAL.length++]=el; \t \t \t }, remove:function(pos){ //my cool stuff to remove } }; \t return FINAL; }
–
2012-03-22 03:30:46
你可以創建一個私有數組一個定製的對象,公開方法,你想
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());
謝謝......但是當我寫(例如在Firebug控制檯)yourCollection,它顯示一個對象,如下所示:Object {myCustomPush = function(),size = function()},想法是顯示一個Array Like Object,如下所示:['some','foo','bar' ],但是當我寫yourCollection.some()時,沒有顯示本地數組的方法。 – 2012-03-22 03:25:39
- 1. 我可以在JavaScript中創建自己的數組對象嗎?
- 2. PHP對象使用自己的數組
- 3. 在我自己的對象中實現事件
- 4. 如何實現自己的延遲加載當對象在自己的DLL
- 5. Javascript回調,引用自己的對象
- 6. 調用javascript對象自己的屬性
- 7. JavaScript - 引用自己的對象
- 8. Make_shared - 自己實現
- 9. 將對象添加到現有的對象數組中 - JavaScript
- 10. Javascript:從它自己的遞歸實例化新對象
- 11. JavaScript數組中的對象
- 12. 實現你自己的* ngIf
- 13. 自己的pthread鍵實現
- 14. Android自己的ArrayAdapter實現
- 15. IDictionary自己的實現IEnumerator
- 16. 實現自己的sizeof
- 17. 實現我自己的DBGrid
- 18. 實現自己的ViewModelLocator
- 19. SSL或自己的實現?
- 20. 如何在自己的類中聲明一個對象數組?
- 21. 實現我自己的getline函數
- 22. 數組對象數組的Javascript中
- 23. 數組對象中的數組Javascript
- 24. 映射本地Java對象自己實現
- 25. 實現自定義對象
- 26. 使用對象數組實現列表
- 27. 觀察者模式問題 - JavaScript對象從父數組中刪除自己?
- 28. 在ReactJS中實現javascript/json對象
- 29. 如何在javascript中實現onclick對象?
- 30. 更改自己對象中函數內部對象的屬性
您可能會看看Underscore.js的靈感收集方法:http://documentcloud.github.com/underscore/#collections – rjz 2012-03-18 17:10:05
[Javascript Like對象數組]的重複http://stackoverflow.com/questions/6599071/array-like-objects-in-javascript) – 2012-03-18 17:10:55
簡而言之,定義數字屬性,'length'屬性,並將自定義方法分配給'YourArrayLikeObject.prototype'。 http://stackoverflow.com/search?q=jquery+like+array – 2012-03-18 17:11:49