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

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

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

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

Q&A

解決済

2回答

288閲覧

Console画面に出力される場合とされない場合について

newyee

総合スコア213

JavaScript

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

0グッド

1クリップ

投稿2018/09/12 01:35

コンソールが出力される場合とされない場合の違いが分かりません。
以下のコードを実行しますと、Console画面にAnimal{}と表示されるのですが、「Dog.prototype = new Animal();」ここの部分を消した場合は何も表示されません。
どなたかご解説くださる方いらっしゃいましたら、ご説明お願いいたします。

javascript

1var Animal = function(){ 2 3 console.log(this); 4 }; 5 6 7 8 9 Animal.prototype = { 10 walk : function() { 11 console.log('トコトコ...'); 12 } 13 }; 14 15 var Dog = function() { 16 17 18 }; 19 20 21 22 Dog.prototype = new Animal(); 23 24 Dog.prototype.bark = function(){ 25 26 27 } 28 29 var d = new Dog(); 30 31

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

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

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

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

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

guest

回答2

0

ベストアンサー

https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/new#Description

指定した引数を伴ってコンストラクタ関数 Foo が呼び出され、this が新たに生成したオブジェクトに紐づけられます。new Foo は new Foo() と等価です。すなわち、引数を指定しない場合は Foo が引数なしで呼び出されます。

ということで、Dog.prototype = new Animal();がなければconsole.logが実行される機会がないっつだけではないかな
しらんけど

投稿2018/09/12 02:14

編集2018/09/12 02:14
bwz61366

総合スコア2009

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

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

newyee

2018/09/12 06:12

ご回答ありがとうございます!
guest

0

「Dog.prototype = new Animal();」ここの部分を消した場合は何も表示されません。

むしろなぜ表示されると思ったかの方が疑問なのですが
Animal()を呼びしてないからconsole.logのとこまでたどり着かないだけですね

投稿2018/09/12 01:41

yambejp

総合スコア114747

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

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

newyee

2018/09/12 02:01

ご回答ありがとうございます。 基礎的な部分が、全然理解できていませんでした... 「Dog.prototype = new Animal();」ここの部分というのは、ただ単にインスタンス化したものを、Dogオブジェクトのプロパティに追加している訳ではなく、同時に関数の中身も実行しているということなのでしょうか?
yambejp

2018/09/12 02:18

> 関数の中身も実行している 関数というよりAnimalがコンストラクタで インスタンスを作成するときに それを処理しているという認識でよいでしょう
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問