почему код срабатывает лишь в третьем случае
var Army = function(units){
var group = {units:units};
group.prototype.attack = function(){
console.log("army is attack");
};
return group;
}
var a = new Army();
a.attack();
//Uncaught TypeError: Cannot set property 'attack' of undefined
// at new Army (<anonymous>:3:25)
var Army = function(units){
var group = function(){this.units=units;};
group.prototype.attack = function(){
console.log("army is attack");
};
return group;
}
var a = new Army();
a.attack();
//Uncaught TypeError: a.attack is not a function
var Army = function(units){
var group = function(){this.units=units;};
group.prototype.attack = function(){
console.log("army is attack");
};
return new group();
}
var a = new Army();
a.attack();
// army is attack
group нет свойства prototype, поскольку свойство prototype - это свойство конструкторов.group содержит конструктор, однако и возвращаете вы сам конструктор, а не объект при его помощи сконструированный. Следовательно и обращаться к методу attack нужно как a.prototype.attack, а не a.attack.group - конструктор, и возвращая new group() вы вызываете этот конструктор, следовательно, возвращаете сконструированный им объект, который позволяет через прототип обратиться к методу attack.Продвижение своими сайтами как стратегия роста и независимости