Object-Oriented JavaScript book からの質問: Array() が存在せず、配列リテラル表記も存在しないと想像してください。可能な限り Array() に近い動作をする MyArray() というコンストラクターを作成します。
自分のスキルを試す良いチャレンジになると思いました。これは私が思いついたものですが、機能せず、非常に不完全です..私は少し困惑しています:
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 をもっと学ぼうとするだけです。誰かがこのコードで私を助けようとすることができますか?