Здравствуйте!
$c = console;
function six(name,age){
this.name = name;
this.age = age;
return {
a: 10,
b: 20
};
};
var MAD = new six("Alex", 26);
for(var k in MAD){
$c.log(k + " : " + MAD[k]); // a : 10 b : 20
};
$c.log(MAD.hasOwnProperty("a")); //true
Почему в данном примере свойства объектов
name
и
age
не создаются в объекте
MAD
? Ведь код функции "конструктора" выполняется (ну тоесть если вставить допустим в функцию после операций присваивания
this.name = name
например какой нибудь алерт, он же выполнится), но почему - то операция присваивания не срабатывает
this.name = name
, хотя по идее при вызове функции с
new
объект до знака равно (т.е. MAD) должен получить свойства. Это связанно с тем, что оператор
return
имеет больший приоритет чем операциИ присваивания в данном случае? Ну и если это так, то что происходит , точнее как действует интерпритатор, ведь он сначала при вызове
new
всё же выполняет код функции, но получается что присвоив объекту
MAD
свойства переданные аргументом, он их потом забывает после того как видит
return
? Или операции присваивания вообще не происходит в данном примере?