來自面向對象的JavaScript書籍的問題:想象一下Array()不存在,並且數組文字符號也不存在。創建一個名爲MyArray()的構造函數,其行爲儘可能接近Array()。仿真數組對象
我認爲這是一個很好的挑戰來測試我的技能。這是我想出了,但它不工作,是非常不完整的..我有點爲難:
function MyArray(){
// PRIVATE FIELDS -----------------------
var initialData = arguments;
var storage;
// PRIVATE METHODS ----------------------
function refresh(){ //this doesn't work :(
for(var i = 0; i < storage.length; i++){
this[i] = storage[i]
}
};
function initialize(){
storage = initialData;
refresh();
}
function count(){
var result = 0;
for(var item in this){
//console.log(item, parseInt(item), typeof item);
if(typeof item == 'number'){
result++;
}
}
return result;
};
initialize();
// PUBLIC FIELDS -------------------------
this.length = count();
// PUBLIC METHODS ------------------------
//todo:
this.push = function(item){
refresh();
}
this.pop = function(){}
this.join = function(){}
this.toString = function(){}
}
var c = new MyArray(32,132,11);
console.log(c, c.length);
這不是任何生產代碼或任何項目..只是嘗試學習JavaScript更多。任何人都可以嘗試使用此代碼來幫助我?
關於Array對象的關鍵是「length」屬性是魔術。一旦Harmony對象代理變得真實,像這樣的事情就不會那麼難。 – Pointy
所以你使用數組來複制數組?即使作爲練習,它對我來說也沒有多大意義。如果您想學習繼承和高級主題,我建議您從[基本JavaScript設計模式](http://addyosmani.com/resources/essentialjsdesignpatterns/book/) – elclanrs
@elclanrs,該書的+1,謝謝。 – corazza