[]で追加するとうまく動かない
var arr=SubArr();
arr[0]=10;
arr[1]=100;
arr.push(1000);
これだと1個しか要素がない。
[]
これで追加するとlengthが自動で変化しないのが原因みたい。
lengthを手動で変更
var arr=SubArr();
arr[0]=10;
arr[1]=100;
arr.push(1000);
// lengthをセットすると動く
arr.length = 2;
対策として、継承したクラスにsetメソッドを作る
tm.define('SubArr',{
//略
//対策として、メソッドを用意
set:function(index, value){
this[index] = value;
if(this.length <= index) this.length = index + 1;
return this;
},
});
実際
配列をこんな歯抜けな感じで使うケース少ないので、push
とかpop
だけで済むことが多いです。
どうしても[]
で要素を追加しないといけないという時だけ、length
が変化しないことを思い出してみてください。