2012年07月22日

protptypeプロパティ

JavaScriptでは関数にコンストラクタ関数を利用してオブジェクトを追加する方法とprototypeプロパティを利用してオブジェクトを追加する方法がある。

var Hoge = function(){
this.foo = "foo";
this.bar = function(){return "bar"}
}
Hoge.prototype.foo2 = "foo2";
Hoge.prototype.bar2 = function(){
return "bar2";
}
var hoge = new Hoge();
console.log(hoge.foo);//foo
console.log(hoge.bar());//bar
console.log(hoge.foo2);//foo2
console.log(hoge.bar2());//bar2


prototypeで追加されたオブジェクトはコンストラクタ関数への参照の為、コンストラクタ関数に変更を加えるとすでに生成されたインスタンスも含めて全てのオブジェクトに反映されます。

var Hoge = function(){}
var hoge = new Hoge();
console.log(hoge.foo2);//undefined
Hoge.prototype.foo2 = "foo2";
console.log(hoge.foo2);//foo2


コンストラクタ関数を利用して追加したオブジェクトとprototypeプロパティを利用して追加したオブジェクトではコンストラクタ関数を利用して追加したオブジェクトのほうが先に参照されます。コンストラクタ関数を利用して追加したオブジェクトがない場合にprototypeプロパティを利用して追加したオブジェクトが参照されます。

var Hoge = function(){
this.foo = "foo";
this.remove = function(){
delete this.foo
}
}
Hoge.prototype.foo = "foo2";
var hoge = new Hoge();
console.log(hoge.foo);//foo
hoge.remove()
console.log(hoge.foo);//foo2


タグ:protptype
posted by ねこまんま at 19:46 | Comment(0) | TrackBack(0) | 関数/文法 | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。
この記事へのトラックバックURL
http://blog.seesaa.jp/tb/282560903
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック