Здравствуйте! Подскажите в чем разница.
Код 1
function cyl(l, d){
this.lenght2 = l;
this.diametr = d;
this.area = function(){return this.lenght2 * this.diametr}
}
var a = new cyl(10, 3);
var b = new cyl(12, 4);
document.write(a.area() + " " + b.area());
Код 2
function cyl(l, d){
this.lenght2 = l;
this.diametr = d;
}
cyl.prototype.area = function(){return this.lenght2 * this.diametr}
var a = new cyl(10, 3);
var b = new cyl(12, 4);
document.write(a.area() + " " + b.area());
Не совсем понимаю в чем разница(
Читаю раздел прототипы и наследование,Фленагана. Только не могу сообразить что автор имеет ввиду в этом абзаце по этой теме
Но свойство area каждого отдельно взятого объекта Rectangle(у меня cyl) всегда будет ссылаться на одну и ту же функцию (разумеется, это свойство можно изменить в процессе работы, но, как правило, предполагается, что методы объекта не должны меняться). Применение отдельных свойств для хранения методов объектов, которые могли бы совместно использоваться всеми экземплярами одного и того же класса, – это достаточно неэффективное решение.
Однако и эту проблему можно решить. Оказывается, все объекты в JavaScript содержат внутреннюю ссылку на объект, известный как прототип.