LoginSignup
0
0

More than 5 years have passed since last update.

[tmlib.js] Arrayクラスを継承した時の謎の挙動

Posted at

[]で追加するとうまく動かない

runstant


var arr=SubArr();

arr[0]=10;
arr[1]=100;
arr.push(1000);

これだと1個しか要素がない。
[]これで追加するとlengthが自動で変化しないのが原因みたい。

lengthを手動で変更

runstant


var arr=SubArr();

arr[0]=10;
arr[1]=100;
arr.push(1000);

// lengthをセットすると動く
arr.length = 2;

対策として、継承したクラスにsetメソッドを作る

runstant

tm.define('SubArr',{
//略
    //対策として、メソッドを用意
    set:function(index, value){
        this[index] = value;
        if(this.length <= index) this.length = index + 1;
        return this;
    },
});


実際

配列をこんな歯抜けな感じで使うケース少ないので、pushとかpopだけで済むことが多いです。
どうしても[]で要素を追加しないといけないという時だけ、lengthが変化しないことを思い出してみてください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0