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

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

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

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

Q&A

解決済

1回答

624閲覧

JSのDateクラスの仕組みを知りたい

nicoyou

総合スコア129

JavaScript

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

0グッド

1クリップ

投稿2020/06/02 05:35

JSにてDateクラスがありますが、以下のようにすれば何故文字列が出力されるのでしょうか?

js

1let d = new Date(); 2console.log(d);

同じ効果を持ったクラスを作ろうとしたのですが調べても見つけられなかったので、調べるのに必要な単語等を教えて欲しいです

js

1class Test{ 2 constructor(str = "") { 3 this.str = "test"; 4 if (str != "") this.str = str; 5 } 6 valueOf() { 7 return this.str.length; 8 } 9 get test() { 10 return this.str; 11 } 12} 13 14 15let test = new Test(); 16let test2 = new Test("test_"); 17console.log(test); 18console.log(test2); 19console.log(test + test2); 20console.log(test - test2);

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

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

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

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

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

guest

回答1

0

ベストアンサー

同じ効果を持ったクラスを作ろうとしたのですが調べても見つけられなかったので

おそらく無理です。console.logの出力形式は実装依存になっているため(WHATWG)、JavaScript上から制御する公式の方法は用意されていません。

投稿2020/06/02 05:47

編集2020/06/02 05:47
maisumakun

総合スコア145183

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

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

nicoyou

2020/06/02 06:03 編集

ご回答ありがとうございます 環境がDateクラスを識別して特別な内容を出力しているという意味でしょうか? では以下のプログラムで変数d_test と d_test2 の型が違うのは何故なのでしょうか? function sleep(waitMsec) { let startMsec = new Date(); while (new Date() - startMsec < waitMsec); } let d1 = new Date(); sleep(100); let d2 = new Date(); let d_test = d2 - d1; let d_test2 = d2 + d1; console.log(d_test); console.log(d_test2); console.log(typeof(d_test)); // number console.log(typeof(d_test2)); // string
maisumakun

2020/06/02 06:08

> 環境がDateクラスを識別して特別な内容を出力しているという意味でしょうか? そのとおりです。 > 以下のプログラムで変数d_test と d_test2 の型が違うのは何故なのでしょうか? 引き算は数値にしかできないので、-の両辺は数値に変換されますが、+は数値にも文字列にも実行可能な演算なので、+の両辺の変換はまた違ったルールで行われます。
nicoyou

2020/06/02 06:15

オブジェクト同士を直接足し合わせて文字列になっているので、コンソールログで出力しなくても文字列になるのが不思議です 差支えなければ質問文の2番目のサンプルコードの console.log(test + test2); の結果が文字列になるようなサンプルを教えていただけないでしょうか?
nicoyou

2020/06/02 06:23

リンク有難うございます ぱっと見で理解できるものでなかったので時間のある夜に確認しようと思います
nicoyou

2020/06/02 12:52

リンクの通りに解決しました 有難うございました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問