Показать сообщение отдельно
  #1 (permalink)  
Старый 06.03.2011, 09:22
Новичок на форуме
Отправить личное сообщение для olek Посмотреть профиль Найти все сообщения от olek
 
Регистрация: 06.03.2011
Сообщений: 1

Как работает оператор new когда функция-конструктор что-то возвращает ?
Хочу разобраться с одной вещью, как работает оператор new когда функция конструктор возвращает что-то с помощью return.
Вот такой пример:
function fA(){
          this.a = 1;
          return function(){
                         this.a = 2;
                       }
}

var vA = new fA();
alert(typeof vA + " = " + vA);//  function = function () { this.a = 2; }

Здесь мы при алерте получили "function = function () { this.a = 2; }
" вместо "object = [object Object]". Я понимаю это так:
new сначала создает новый объект с неопределенными свойствами, затем он вызывает функцию-конструктор. Так как функция-конструктор у нас возвращаєт функцию то в результате мы получаем не объект {a:1} а функцию function () { this.a = 2; } .
Но вот ещё пример:
function fB(){
          this.b = 3;
          return 4;
}

var vB = new fB();
alert(typeof vB + " = " + vB);//  object = [object Object]


в этом случае по моим размышлениям алерт должен выдать сообщение "number = 4" а в действительности - "object = [object Object]".

Почему при создании объекта з помощью оператора new когда функция-конструктор возвращает (return) функцию или объект мы вместо нового объекта получаем возвращаемое значение, а когда функция-конструктор возвращает базовый тип (return 5 или return "тест string") получаем новий объект созданый new и инициализованый функцией-конструктором?
Ответить с цитированием