スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Map(iterable)ではthis.set()が使われる

例えば以下のようなMap継承クラスMapExtがあるとして、constructor内でsuper()による継承元コンストラクタでのインスタンス初期化を行う場合、super()に渡したiterableな引数は Map#set() ではなく MapExt#set() によって自身に格納される。要するにMapのコンストラクタでは、iterableを回してからタイトル通りに this.set(key, value) しているようだ。

class MapExt extends Map {
    constructor(arr){
        super(arr);
    }

    set(...args){
        console.log(...args);
        Map.prototype.set.call(this, ...args);
    }
}
const mapext = new MapExt([['key', 'value']])

これに気付かないまま、上記のような拡張クラスからのMapコンストラクタによる引数付き初期化を行おうとしてうまく行かず小一時間頭を抱えてしまった。これから自分で書くときにはコンストラクタ内でインスタンス自身のPropertyを使わないようにしよう……。おしまい。

関連記事

コメントの投稿

非公開コメント

すポンサードリンク
最新記事
カテゴリ
DN (57)
CSS (2)
いろいろ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。