1

私は次のコードを持っています:

    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」表記 (親メンバーにアクセスするために、子に新しい「親」プロパティを作成せずに)。

4

0 に答える 0