回答編集履歴

1 セミコロン抜け

turbgraphics200

turbgraphics200 score 4221

2017/01/29 16:01  投稿

Case1は、{}にはプロトタイプがないため。
Case2は、
```js
var obj = function(){};
```
の時点では、単にobjに関数を設定しているだけ。
```js
var hoge = new obj;
//した後に
hoge.name = 'Tom';
hoge.age = 45;
```
のように、インスタンス生成した後につけるのでしたらわかりますが(インスタンスプロパティ)、
そのobjに対してプロパティをつけようとしても無理です。
関数オブジェクトとしてプロパティを設定したいのでしたら、
```js
var obj = function() {};
obj.prototype.name = 'Tom';
obj.prototype.age = 45;
obj.prototype.method = function(n) {return n + n;}
// または
var obj = function() {}
var obj = function() {};
obj.prototype = {
 name: 'tom',
 age: 45,
 method: function(n) {return n + n;}
};
```
としなければなりません。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る