前提
JavaScriptの型は、オブジェクト型とプリミティブ型の2つだけ
プリミティブはオブジェクトじゃない、つまりインスタンスメソッドを持たないデータだってこと。
プリミティブ型一覧
Boolean
Number (小数もここに入る。Float的なものはない。NaN:Not A Numberもここ。)
(BigInt)
String
(Symbol)
Null
Undefined
------------------------
しかし以下みたいに、プリミティブ型からメソッド呼べるように見える
'My name is taro'.replace('taro', 'hanako')
これはJavaScriptの特殊仕様によるもの。
(nullとundefinedを除く)プリミティブ型には、その値を包含するラッパーオブジェクトが存在する。
そして、プリミティブ型にアクセスするとき、それに対応するラッパーオブジェクトに自動変換する、という仕様がある。
上の例だと、そのラッパーオブジェクトStringのインスタンスメソッドを実行していた。