Здравствуйте!
$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? Или операции присваивания вообще не происходит в данном примере?