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(); // 「トクジロウ オス」
詳しい仕組みはネタ元参照。
しっかり読み込んで理解しないと、やられます。
ネタ元