LoginSignup
0
0

More than 1 year has passed since last update.

89.ビルトインオブジェクト

Posted at

ラッパーオブジェクト

ビルトインオブジェクトとは

コード実行前にJSエンジンによって、自動的に生成されるオブジェクトのこと
=例えば自分で new ~などで自動的に生成しなくても使えるもの

ビルトインオブジェクトの一例

1.String
2.Object
3.Number
4.Function
5.Math
6.Boolean
7.Date
8.Symbol

などなど
*見分け方としてはWindowオブジェクトの大文字からはじまるコンストラクタなど

<重要>他の言語とは違って配列はオブジェクトの一種として扱われる

const array = new Array(1.2,3,4)
console.log(array)

console.log(array.length) //出力される
console.log(array.Array.length) //出力されない

スクリーンショット 2022-09-06 10.05.15.png

なぜ、console.log(array.Array.length)はダメなのか?

// これのダメな理由が以下を生成した時点で
const array = new Array(1.2,3,4)

スクリーンショット 2022-09-06 10.08.16.png
既に、プロパティ、メソッド、プロトタイプの生成は終わっているんだということ

Array.Array.length

という二重にオブジェクトを生成してしまっているのだ。

つまり、配列は作成した時点で、Arrayオブジェクトなるのだ

補足

ちなみにオブジェクトのメソッド自体(メソッド自体のソースコード)はC++で作られているらしい→中身は確認できない
Javascriptではプリミティブ型以外は全てオブジェクトである

ラッパーオブジェクト

ラッパーオブジェクトとは?

プリミティブ値を内包するオブジェクトである。
## どゆことなのか?
以前から伝えていたこと
プリミティブ型以外は、全てオブジェクトである!
といっていた
じゃあ、
文字列や数値は一切オブジェクトから生成させるプロパティやメソッドが使えないのか?
ということになる
そこで
ラッパーオブジェクトがプリミティブ型くんたちに言いました。

お前らだけでプロパティやメソッド使えないのはかわいそうだから
なんとかするよ。
と、プリミティブ型を包み込むようにオブジェクトっぽいことができるようになったのがラッパーオブジェクト

const a = 'hello' /* 文字列 */
const b = 100			/* 数値 */

console.log(a.toUpperCase());
console.log(b.toExponential());

まるでビルトインオブジェクトのように、簡単に使えます。
オブジェクト型じゃないのに、普通にメソッドが使えるのはビルトインオブジェクトのおかげです

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0