таинственная область вызова вызывающей функции

Если у меня есть:

Object._extends = function(Derived, Base)
{
   Derived.prototype = new Base();
   Derived.prototype.constructor = Derived;
   Derived.uber = Derived.prototype;
}


var BASE = function()
{
    this._name = "BASE"
}

var DERIVED = function()
{
    Object._extends(DERIVED, BASE)
    this._age = 3;
}
// Object._extends(DERIVED, BASE) if I write here all is ok!!!

alert(new DERIVED()._name) // undefined!

когда я пишу Object._extends(DERIVED, BASE)в DERIVEDфункцию, то _nameона не определена, но если я пишу ту же функцию, то она не является неопределенной, но почему?

13.10.2009 11:40:33
ПопробуйтеObject._extends(this, BASE)
jantimon 13.10.2009 11:43:38
Я не могу с этим, потому что я должен установить свойство prototype, которое является свойством функции DERIVED
xdevel2000 13.10.2009 13:01:45
1 ОТВЕТ

При оценке «new», движок сначала создает объект, а затем вызывает его функцию конструктора, то есть «Object._extends», вызываемый в конструкторе, не влияет на уже созданный объект.

0
13.10.2009 12:23:44