http://www.atmarkit.co.jp/fdotnet/ajaxjs/ajaxjs04/ajaxjs04_01.html
C++の気持ちでいると混乱する。
「JavaScriptでは関数オブジェクトにクラスとしての役割を与えて使うもの」と考えるべし。
そして「プロトタイプ」という考え方も重要。
クラスに関数(メソッド)を追加とするにはコンストラクタで定義する必要がある
var Animal = function(name, sex) {
this.name = name;
this.sex = sex;
this.toString = function() {
window.alert(this.name + " " + this.sex);
};
}
var anim = new Animal("トクジロウ", "オス");
anim.toString(); // 「トクジロウ オス」が、ここに書くと大量にnewする場合、まったく同じ処理をするメソッドがメモリ上にnewした数だけ存在してしまう
prototype経由にすると、それが回避できる。
var Animal = function(name, sex) {
this.name = name;
this.sex = sex;
}
Animal.prototype.toString = function() {
window.alert(this.name + " " + this.sex);
};
var anim = new Animal("トクジロウ", "オス");
anim.toString(); // 「トクジロウ オス」詳しい仕組みはネタ元参照。
しっかり読み込んで理解しないと、やられます。
ネタ元