回答編集履歴
2
補足を更に追加
test
CHANGED
@@ -84,4 +84,8 @@
|
|
84
84
|
|
85
85
|
|
86
86
|
|
87
|
+
またコードの中で変数`this`に対し様々な処理を行っている場合はコンストラクタ関数である可能性が高くなります.(`function.bind`メソッドで`this`を束縛している場合を除く)
|
88
|
+
|
89
|
+
|
90
|
+
|
87
91
|
なおこれでは使い勝手が悪いため, JavaScriptの新版ではコンストラクタ関数専用の`class`宣言が追加されています.
|
1
補足を追加
test
CHANGED
@@ -59,3 +59,29 @@
|
|
59
59
|
console.log("age", person.age);//age: 20
|
60
60
|
|
61
61
|
```
|
62
|
+
|
63
|
+
|
64
|
+
|
65
|
+
---
|
66
|
+
|
67
|
+
|
68
|
+
|
69
|
+
NOTE:普通の関数とコンストラクタ関数を見分ける方法は?
|
70
|
+
|
71
|
+
|
72
|
+
|
73
|
+
これらはいずれも`function`宣言等により定義されるため, どちらの意味合いで使っているのかはコードの文脈を読み解くしかありません. が, 次のように使い分けられていることが多いです.
|
74
|
+
|
75
|
+
|
76
|
+
|
77
|
+
- 通常の関数は名称が「動詞+目的語」として定義されており, 先頭が小文字である.
|
78
|
+
|
79
|
+
例)`readBook` 「本を読む」関数であることが判る
|
80
|
+
|
81
|
+
- コンストラクタ関数の名称はものの名前(カテゴリ)がほとんどであり, 先頭が大文字である.
|
82
|
+
|
83
|
+
例)`Book` 「本」を表すオブジェクトを返すコンストラクタ関数であることが判る
|
84
|
+
|
85
|
+
|
86
|
+
|
87
|
+
なおこれでは使い勝手が悪いため, JavaScriptの新版ではコンストラクタ関数専用の`class`宣言が追加されています.
|