質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

885閲覧

javascriptの「オブジェクトの文字列化」とは一体何なのでしょうか?

tanakashouzoux

総合スコア52

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2020/06/07 23:46

編集2020/06/07 23:52

https://jsprimer.net/basic/object/

「オブジェクトの文字列化」について2つ質問があります。

【質問1】
上記サイトで「オブジェクトの文字列化」という物を学んだのですが、これは一体何なのでしょうか?

そもそも「オブジェクト」とは

javascript

1const hoge={tanaka:19};

の{tanaka:19}の部分で、これは既に文字列の様な気がします...

【質問2】
上記サイトで
「オブジェクトのプロパティへアクセスする際に、指定したプロパティ名は暗黙的に文字列に変換されます。 ブラケット記法では、オブジェクトをプロパティ名に指定することもできますが、これは意図したようには動作しません。 なぜなら、オブジェクトを文字列化すると"[object Object]"という文字列になるためです。」
という記述がされていたのですが、この"[object Object]"とは一体何なのでしょうか?

こちらに関しては全く意味不明な気がしているのですが誤植か何かなのでしょうか??

詳しい方御指導頂けないでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2020/06/08 00:29

そもそも文字列も厳密にはオブジェクトです。
tanakashouzoux

2020/06/08 00:38

m.ts10806さん 今回もご指導ありがとうございますm(__)m そうでしたね 文字列も厳密にはオブジェクトでした! ご指摘ありがとうございますm(__)m
miyabi_takatsuk

2020/06/08 00:51 編集

> 文字列も厳密にはオブジェクトでした! 蛇足かもしれませんが、 これ本当に理解されてますか? けっこう深い話になりますが・・・。 (javascriptにおいては、文字列はプリミティブな値としては扱われるが、メソッドやプロパティを持ち合わせる、Stringコンストラクターからのインスタンスとも言える、などetc)
tanakashouzoux

2020/06/08 00:56

miyabi_takatsukさん わざわざ回答ありがとうございますm(__)m 本当に理解しているかと言われるとあまり自身はないのですが・・・ 「プリミティブ値も厳密にはオブジェクトである」という知識を読んだことがある程度でして・・・ やはりそこら辺を本当に理解していないとこの先大変なのでしょうか??
miyabi_takatsuk

2020/06/08 01:04 編集

> やはりそこら辺を本当に理解していないとこの先大変なのでしょうか?? いえ、実用では、現段階ではそこまで意識することないと思いますよ 汗 より深めることによって、より深い構築をしなければいけないときに、 なぜ上手くいかないのか、をパッと理解に至ったりとか、そういった側面はあると思いますが。 例えば、number型の値は、toStringメソッドを持ち合わせているから、 さっと変換できたり、とかは、知識として持ち合わせていると役には立ちますね。 あとは、JSでも、メモリを意識して構築しなければいけないくらい大規模な物を作るときは、 より深い知識が必要になるかとは思います。
tanakashouzoux

2020/06/08 04:02

miyabi_takatsukさん わざわざご回答頂きありがとうございますm(__)m 大規模な物・・・ いつか作れる様に勉強頑張りたいと思います!
guest

回答2

0

ベストアンサー

これは既に文字列の様な気がします...

ソースコードには文字で書くしかないですが、JavaScript上では文字列と別種のオブジェクトとなっています。

この"[object Object]"とは一体何なのでしょうか?

そういう文字列です。実際にやってみればわかるかと思いますが、"[object Object]"という文字列が結果として返されます。

投稿2020/06/08 00:20

maisumakun

総合スコア146018

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2020/06/08 00:24

実用的にObject.prototype.toStringを使うのは、「文字列化」というよりは「オブジェクトの種類の識別」のためが多いです([object Object]以外を返すオブジェクトも存在します)。 あと、うっかり文字列変換を行ってしまって[object Object]という文字列を目撃することになるトラブルも、時折やらかします。
tanakashouzoux

2020/06/08 00:35 編集

maisumakunさん いつもいつもありがとうございますm(__)m 今確かめてみたところ確かに"[object Object]"と表示されました!! ちなみにこの"[object Object]"は何を意味しているのでしょうか? 「Objectという名前のオブジェクト」を表しているのでしょうか?? あと、この"[object Object]"は「プロトタイプ」というものを学んでから考えた方がよいのでしょうか? 実は次回以降の章に「プロトタイプ」という章がありまして・・・
tanakashouzoux

2020/06/08 00:36

maisumakunさん わざわざご丁寧にリンクまでご教示頂きありがとうございますm(__)m 拝読し次第またお礼を述べさせて下さいm(__)m
tanakashouzoux

2020/06/08 01:00

maisumakunさん 上記リンク拝読しました! オブジェクトの知識が深まったと思います!!! 本当にいつもいつもありがとうございますm(__)m
guest

0

既に文字列の様な気が

プログラム的には文字列ではないオブジェクトとして保持されます。
オブジェクトを文字列に置き換える必要があります
const hoge={tanaka:19};
console.log(JSON.stringify(hoge));

投稿2020/06/08 00:20

yambejp

総合スコア116724

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tanakashouzoux

2020/06/08 00:30

yambejpさん わざわざご回答ありがとうございますm(__)m 「オブジェクトを文字列に置き換える必要があります」とのことですが、これは何のために必要なのでしょうか??
yambejp

2020/06/08 00:41

サーバーとのデータ交信やcookieやlocalstorageなどへの保存の際には 原則文字列でしか処理ができないからです
tanakashouzoux

2020/06/08 00:57

yambejpさん 何度もご回答ありがとうございますm(__)m そうなんですね! サーバーもcookieもlocalstorageも何も知らないもので・・・ 大変勉強になりました! ありがとうございますm(__)m
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問