таинственная область вызова вызывающей функции - PullRequest
0 голосов
/ 13 октября 2009

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

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 не определено, но если я пишу ту же функцию, то она не является неопределенной, но почему?

1 Ответ

0 голосов
/ 13 октября 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...