0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

JavaScriptのあらゆるものがObjectのように振る舞うとは

Last updated at Posted at 2019-02-16

あらゆるものがObjectのように振る舞う

JavaScriptを学び始め

『あらゆるものがObjectのように振る舞う』

ということは本などで目にしていたがあまりピンと来なかった。

これを初心者の僕が納得できる本を見つけた。

認識を深めることができた本

『開眼!JavaScript』の15ページのNOTEに書かれていた。

#『あらゆる...』とはどういうことか

スクリーンショット 2019-02-17 1.25.35.png

このような文字列をリテラルで記述するとオブジェクトではなく、プリミティブ型としての性質を持ちます。

つまり、fooはオブジェクトではなくプリミティブなのでオブジェクトのメソッドやプロパティにはアクセスすることができないはずです。

しかし、
スクリーンショット 2019-02-17 1.27.53.png

プリミティブであるfooがStringオブジェクトのメソッドを利用できています。

これは、JavaScriptがプロパティにアクセスしようとするとプリミティブ値を補完するラッパーオブジェクトを一時的に生成するのです。(foo.length)

これによりラッパーオブジェクトによりStringオブジェクトのメソッドやプロパティを利用できます。目的のメソッドが実行されるとプリミティブ値に戻ります。

つまり、

『JavaScriptはObjectばっかりだ』

というよりも

『JavaScriptはすべてがObjectのようにふるまう』

が正しい。

結論

裏でプリミティブ⇄オブジェクトのような変換を行うことで、全てがObjectのように振る舞えるようにやっているんだ、と認識を改めることができた。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?