const values = []
const append = (data) => {
if (data.type === 0) {
values.push(data.value)
}
}
変数と関数をフラットにおいてる
クラス好きな人ならクラス化しそう
class X {
values = []
append(data) {
if (data.type === 0) {
this.values.push(data.value)
}
}
}
const x = new X()
一回限りなので即時インスタンス化して
const x = new class {
values = []
append(data) {
if (data.type === 0) {
this.values.push(data.value)
}
}
}
こうすると append を渡すときに this のコンテキストが消えるので bind やアロー関数でラップが必要になる
使う側で気にしなくていいようにプロトタイプじゃなくてインスタンス自身に関数を入れる
const x = new class {
values = []
append = (data) => {
if (data.type === 0) {
this.values.push(data.value)
}
}
}
これならもうクラスの必要性がないのでただのオブジェクトにして
const x = {
values: [],
append: (data) => {
if (data.type === 0) {
x.values.push(data.value)
}
},
}