以下のコードで Array オブジェクトをサブクラス化しようとしています。ブラウザでコードを実行すると、正常に動作します。ただし、このコードを .js ファイルに配置し、そのファイルを<script>
タグでインクルードすると、.add()
メソッドは未定義になります。
class Collection extends Array {
constructor(data) {
super(...data);
}
add(model) {
this.push(model);
}
}
const coll = new Collection(['item1', 'item2']);
console.log(coll); // -> ['item1', 'item2']
console.log(coll.add); // -> undefined
ページをロードすると、.add()
未定義です。しかし、まったく同じコードをコンソールにコピーして貼り付けると、機能します。
どうしたの?
更新 トランスパイルに Babel.js (v6.x) も使用していますが、Fuechter が回答で説明しているように、これが問題であることが判明しました。