function Resource(){
var id = '';
this.getId = function(){
return id;
}
this.setId = function(value){
id = value;
}
}
function Model(){ }
Model.prototype = new Resource();
上記のコードをテストするために、私は次のものを持っています:
var m1 = new Model();
m1.setId("blah");
alert("m1 = " + m1.getId());
var m2 = new Model();
m2.setId("blahblah");
alert("m2 = " + m2.getId());
alert("m1 = " + m1.getId());
次の警告が表示されると思いますm1 = blah, m2 = blahblah, m1 = blah
。
ただし、以下が表示されていますm1 = blah, m2 = blahblah, m1 = blahblah
。
上記のコードは、JavaScriptでの継承を理解し始めるための実験として作成しました。おそらく、何が表示されるべきかについての私の期待は、私のJava / C#のバックグラウンドによるものです。明らかに、作成された新しいModelオブジェクトはそれぞれid
、Resourceで定義された同じ変数を共有します。どうしてこれなの?
これをどのように記述すれば、新しい各モデルが独自のid
(明らかなもの以外の-モデル内での定義)を持つことができますか?
ところで、私はプライベート変数の動作を探しているので、意図的にidvar id
ではなくidを定義しました。this.id