📑

オブジェクトではないプリミティブ値でなぜメソッドが使えるのか

に公開

プリミティブ値を暗黙的にラッパーオブジェクトが内包している

ラッパーオブジェクトとは一時的にインスタンス化(オブジェクト化)しているということ
メソッドを呼び出すと暗黙的に一時的にインスタンス化が行われる
(ラッパーオブジェクトというインスタンスは処理後削除されるのでデータはプリミティブ値のままになる)
なのでオブジェクト以外であるはずのプリミティブ値でメソッドが使える

const text = "こんにちは";
const foo = text.toUpperCase()//fooはプリミティブ値
//一時的に裏側で行われ削除される処理
 new String(text).toUpperCase();//Stringオブジェクト

最後に

初学の時に理解が曖昧だったので改めて学ぶことでいい復習になりました

Discussion