teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

文言

2021/09/24 16:03

投稿

int32_t
int32_t

スコア21933

answer CHANGED
@@ -1,5 +1,6 @@
1
1
  > `var Person = function({name='nameless'}){`
2
2
 
3
3
  このようにコンストラクタを定義したからには、`Person()`の呼び出しには必ずオブジェクトの引数が必要です。エラーメッセージはそのことに文句を言っています。
4
+ JavaScriptには「名前付き引数」という機能はなく、これは「分割代入」なので引数は必要なのです。
4
5
 
5
6
  ですが、そもそも`Hero.prototype = new Person();` がおかしいです。「javascript prototype 継承」で検索すると例がいくらでも見つかると思いますが、ここは`Hero.prototype = Object.create(Person.prototype);`とすべきでしょう。