コードでJavaScriptの継承を使用しようとしています。以下は同じのjsfiddleです。 http://jsfiddle.net/Fetsz/3/
var baseObject = Object.create(Object, {
// this works as an instance variable for derived objects
name: {
writable: true,
configurable: true,
enumerable: true,
value: null
},
// this should act as instance variable for derived objects
values: {
writable: true,
configurable: true,
enumerable: true,
value: []
},
displayAlert: {
value: function (){
alert("Alert from base object");
}
}
});
var derivedObj1 = Object.create(baseObject, {});
var derivedObj2 = Object.create(baseObject, {});
function displayValues (obj) {
alert("values for " + obj.name + "\n" + JSON.stringify(obj.values));
};
$(document).ready(function(){
derivedObj1.name = "Object 1";
derivedObj2.name = "Object 2";
derivedObj1.values.push("DO1 element");
derivedObj2.values.push("DO2 element");
derivedObj1.displayAlert();
// should display values added only for derivedObj1
displayValues(derivedObj1);
// should display values added only for derivedObj2
displayValues(derivedObj2);
});
また、コードが機能しない理由をうまく説明している次の質問も確認しました。Javascriptの継承:親の配列変数は値を保持します
特定の値を含むすべての派生クラスに配列メンバー変数が必要です。基本クラスに配列を追加して同じことを実現しようとしていました。上記の質問で述べたように、同じことを実現するには、各派生クラスに配列メンバーを追加する必要があります。すべての派生クラスを変更せずにこれを実現する他の方法はありますか?