- 186 名前:更紗 ◆SARAHxmkr. mailto:sage [2006/06/15(木) 04:23:03 ]
- // 継承前
function Person(nAge) { this.m_nAge = nAge; } Person.prototype.getAge = function() { return this.m_nAge; }; // 継承先 function Programmer(nAge, strProject) { this.__super = Person; // 新インスタンスを介して this.__super(nAge); // 継承元コンストラクタを呼ぶ this.constructor = Programmer; // コンストラクタが Person にセットされるので元に戻す delete this.__super; /* Programmer コンストラクタの処理 */ } // 継承先の方法2つ目 function Programmer(nAge, strProject) { Person.call(this, nAge); this.constructor = Programmer; /* Programmer コンストラクタの処理 */ } このコードでPersonのプロパティをProgrammerのプロパティで継承する際に、 Person(nAge)として、親のコンストラクタを呼んで 値を初期化せずに、スコープを変更して呼びしているのは、 そうしないと、値へのアクセスがインスタンスを介して出来なくなるからですか? いまひとつ変数のスコープが理解できません。 Personクラスのthis.m_nAge = nAge;を呼び出しても、 インスタンスがthisに入るので、インスタンスの変数としてm_nAgeが初期化され そうに思えてしまいます。
|

|