回答編集履歴
2
調整
answer
CHANGED
@@ -11,7 +11,33 @@
|
|
11
11
|
var y=new hoge(123);
|
12
12
|
hoge.prototype.view=function(){console.log(this.x)};
|
13
13
|
y.view(); //結果:123
|
14
|
+
var z=new hoge(456);
|
15
|
+
z.view(); //結果:456
|
14
16
|
```
|
15
17
|
上記hogeに直接メソッドを追加できませんがprototypeを経由すればできます
|
16
18
|
またインスタンスyを指定したあとにprototype経由でメソッドを追加しても
|
17
|
-
インスタンスからメソッドが呼び出せます。
|
19
|
+
インスタンスからメソッドが呼び出せます。
|
20
|
+
|
21
|
+
# 追記
|
22
|
+
prototypeを通さないとメソッドが追加されない
|
23
|
+
```javascript
|
24
|
+
function hoge(x){
|
25
|
+
this.x=x;
|
26
|
+
}
|
27
|
+
var y=new hoge(123);
|
28
|
+
hoge.view=function(){console.log(this.x)}; //エラー
|
29
|
+
```
|
30
|
+
|
31
|
+
インスタンス自体は拡張可能
|
32
|
+
```javascript
|
33
|
+
function hoge(x){
|
34
|
+
this.x=x;
|
35
|
+
}
|
36
|
+
var y=new hoge(123);
|
37
|
+
y.view=function(){console.log(this.x)};
|
38
|
+
y.view(); //結果:123
|
39
|
+
var z=new hoge(456);
|
40
|
+
z.view(); // エラー
|
41
|
+
```
|
42
|
+
インスタンスを拡張しても元のコンストラクタへは影響がないので
|
43
|
+
別のインスタンスから実行することはできない
|
1
ちょうせい
answer
CHANGED
@@ -1,3 +1,17 @@
|
|
1
1
|
> Object.prototype. つまり, Objectのプロトタイプオブジェクトで定義されているのでしょうか?
|
2
2
|
|
3
|
-
こればっかりはそういう仕様だからとしか言いようがないですね
|
3
|
+
こればっかりはそういう仕様だからとしか言いようがないですね
|
4
|
+
|
5
|
+
# sample
|
6
|
+
|
7
|
+
```javascript
|
8
|
+
function hoge(x){
|
9
|
+
this.x=x;
|
10
|
+
}
|
11
|
+
var y=new hoge(123);
|
12
|
+
hoge.prototype.view=function(){console.log(this.x)};
|
13
|
+
y.view(); //結果:123
|
14
|
+
```
|
15
|
+
上記hogeに直接メソッドを追加できませんがprototypeを経由すればできます
|
16
|
+
またインスタンスyを指定したあとにprototype経由でメソッドを追加しても
|
17
|
+
インスタンスからメソッドが呼び出せます。
|