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

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

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

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

2回答

1709閲覧

なぜ公式サイトが具体的なオブジェクトを持っている?何のために?

goforward

総合スコア705

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2017/04/29 06:20

編集2022/01/12 10:55

イメージ説明

クラスからコンストラクタでインスタンスを作ってそれをsで受けた。

javascript

1var s = new String("taguchi"); 2 console.log(s.length);

この文は
stringクラスからコンストラクタでsオブジェクト(インスタンス)を作り、
sオブジェクト.lengthプロパテにアクセスし、呼び出しと解釈してよろしいでしょうか?

公式サイトを見ているとStringがオブジェクトのように思えます。オブジェクトのコンストラクタではなく、クラスのコンストラクタでインスタンスを作ったのでないのでしょうか?
そもそもなぜ人間クラスではなく、具体的なAさんやBさんなどのようなオブジェクトを作る必要があるのでしょうか?

公式サイトののすべてはクラスではないのでしょうか?
クラスを継承してオブジェクトを作ったり、少し機能追加したり。コンストラクタで宜しくお願い致します。
クラスとインスタンス名が同じになるというルールなのでしょうか?


次は組み込みオブジェクトについて見ていきたいと思います。
0:07
前回は自分でオブジェクトを作りましたが、あらかじめ JavaScript が用意してくれているオブジェクトがいくつかあります。
0:13
それを使うと便利なメソッドやプロパティが使えるようになるので見ていきましょう。
0:17
いくつかありますが、よく使うものは、文字列に関する String オブジェクト、配列に関する Array オブジェクト、数学に関する Math オブジェクト、日付に関する Date オブジェクトなどがあるので、ざっと見ていきましょう。
0:31
まずは文字列オブジェクトについて見ていきたいと思います。
0:35
文字列オブジェクトを作るには、「new String("…");」としてあげて、何の文字列に対して作りたいかを引数で渡してあげます。
0:44
そうすると s に対して色んなメソッドやプロパティが使えるようになります。
0:48
どういったものが使えるのかは、MDN のサイトで調べると良いので、「mdn string」などで検索してみてください。
0:55
そうすると色々難しい用語が並んでいるのですが、見るべきは「String インスタンス」というところの下にある、プロパティやメソッドになります。
1:08
せっかくなので、ちょっと見てみたいと思います。
1:12
例えば s.length というプロパティを使うと、taguchi の文字数を返してくれます。
1:23
この場合だと 7 文字で…こうですね、7 が返ってきているのがわかるかと思います。

リンク内容

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

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

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

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

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

kei344

2017/04/29 08:41

「公式サイトが具体的なオブジェクトを持っている」とは?
guest

回答2

0

JavaScriptの世界では、コンストラクタは関数であって、そして関数もオブジェクトです。

String関数自体のオブジェクト」と「String()で作ったオブジェクト」は別物です。

そして、ある程度学習が進むまで、「クラス」という単語はJavaScriptでは忘れてください

投稿2017/04/29 07:51

maisumakun

総合スコア145121

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

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

goforward

2017/04/30 16:13

確かに本を見ている限りクラスという言葉は一度も出てきていません。
maisumakun

2017/04/30 21:44

JavaScriptは「プロトタイプベース」といって、クラスをベースとして「いない」言語なのです。
guest

0

maisumakunさんも示唆していますが、javascriptには「クラス」という概念は存在しません

javascriptにおける"コンストラクタ"とは、正確には関数のコンストラクタ呼び出しです。
javascriptには、関数の呼び出し方が複数種類存在し、コンストラクタとは関数の呼び出し方の一種なのです。

function Sample(args) { console.log('this:', this); console.log('args:', args); } var obj = { sample: Sample }; Sample(123); // 1. いわゆる「関数呼び出し」 new Sample(123); // 2. 関数の「コンストラクタ呼び出し」 obj.sample(123); // 3. 関数の「メソッド呼び出し」

これらはそれぞれ、関数内で参照されるthisの中身が変わります。

  1. 関数内のthisはグローバルオブジェクト(=windowオブジェクト)を参照し、

呼び出された関数はreturnの結果を返します。
0. 関数内のthisは、Sampleという名前の空オブジェクト(={})を参照し、
呼び出された関数はそのSampleオブジェクトを返します。
0. 関数内のthisは、sampleメソッドのレシーバ(=obj)を参照します。
呼び出された関数はreturnの結果を返します。

var s = new String("taguchi");

上記ケースの場合、「Stringクラスのコンストラクタでインスタンスを作成し、変数sに格納した」のではなく、「String関数のコンストラクタ呼び出しを行い、コンストラクタで組み立てられたStringオブジェクトを変数sに格納した」という説明になります。

投稿2017/04/29 14:12

編集2017/04/30 00:17
philomagi

総合スコア267

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問