回答編集履歴

2

調整

2019/12/05 01:51

投稿

yambejp
yambejp

スコア116694

test CHANGED
@@ -24,6 +24,10 @@
24
24
 
25
25
  y.view(); //結果:123
26
26
 
27
+ var z=new hoge(456);
28
+
29
+ z.view(); //結果:456
30
+
27
31
  ```
28
32
 
29
33
  上記hogeに直接メソッドを追加できませんがprototypeを経由すればできます
@@ -31,3 +35,51 @@
31
35
  またインスタンスyを指定したあとにprototype経由でメソッドを追加しても
32
36
 
33
37
  インスタンスからメソッドが呼び出せます。
38
+
39
+
40
+
41
+ # 追記
42
+
43
+ prototypeを通さないとメソッドが追加されない
44
+
45
+ ```javascript
46
+
47
+ function hoge(x){
48
+
49
+ this.x=x;
50
+
51
+ }
52
+
53
+ var y=new hoge(123);
54
+
55
+ hoge.view=function(){console.log(this.x)}; //エラー
56
+
57
+ ```
58
+
59
+
60
+
61
+ インスタンス自体は拡張可能
62
+
63
+ ```javascript
64
+
65
+ function hoge(x){
66
+
67
+ this.x=x;
68
+
69
+ }
70
+
71
+ var y=new hoge(123);
72
+
73
+ y.view=function(){console.log(this.x)};
74
+
75
+ y.view(); //結果:123
76
+
77
+ var z=new hoge(456);
78
+
79
+ z.view(); // エラー
80
+
81
+ ```
82
+
83
+ インスタンスを拡張しても元のコンストラクタへは影響がないので
84
+
85
+ 別のインスタンスから実行することはできない

1

ちょうせい

2019/12/05 01:51

投稿

yambejp
yambejp

スコア116694

test CHANGED
@@ -3,3 +3,31 @@
3
3
 
4
4
 
5
5
  こればっかりはそういう仕様だからとしか言いようがないですね
6
+
7
+
8
+
9
+ # sample
10
+
11
+
12
+
13
+ ```javascript
14
+
15
+ function hoge(x){
16
+
17
+ this.x=x;
18
+
19
+ }
20
+
21
+ var y=new hoge(123);
22
+
23
+ hoge.prototype.view=function(){console.log(this.x)};
24
+
25
+ y.view(); //結果:123
26
+
27
+ ```
28
+
29
+ 上記hogeに直接メソッドを追加できませんがprototypeを経由すればできます
30
+
31
+ またインスタンスyを指定したあとにprototype経由でメソッドを追加しても
32
+
33
+ インスタンスからメソッドが呼び出せます。