私は次のコードを持っています:
var Person = function () {
this.Id = 0;
this.Name = "";
};
var Emp = function () {
this.OfficeEmail = "";
};
Emp.prototype = new Person();
Emp.prototype.constructor = Emp;
var oEmp = new Emp();
alert(oEmp.hasOwnProperty('OfficeEmail'));//true
alert(oEmp.hasOwnProperty('Id'));//false
alert(oEmp.hasOwnProperty('Name'));//false
alert("Id" in oEmp); //true - inherited property
alert("Name" in oEmp); //true - inherited property
alert("OfficeEmail" in oEmp); //true - direct property
//----------------The following screws up-------------------------
oEmp.Id = 9999; //creates a new property in Emp instead of accessing from Person
oEmp.Name = "Scott"; //creates a new property in Emp instead of accessing from Person
oEmp.OfficeEmail = "Scott@yahoo.com";
//Now the output is different here
alert(oEmp.hasOwnProperty('OfficeEmail'));//true
alert(oEmp.hasOwnProperty('Id'));//true - supposed to be false
alert(oEmp.hasOwnProperty('Name'));//true - supposed to be false
別のプロパティ(「親」と言う)を作成して「Emp」プロトタイプに追加できる(そして「親」を使用して親メンバーにアクセスできる)ことは理解していますが、基本クラスのプロパティへの透過的なアクセスを実現できるかどうか疑問に思っています。 「childObject.parentProperty」表記 (親メンバーにアクセスするために、子に新しい「親」プロパティを作成せずに)。