В JavaScript то же самое вы можете делать разными способами.
Рассмотрим примеры:
1:
function Circle(radius) {
return {
"r" : radius,
"area" : function(){
return Circle.pi * this.r * this.r;
}
}
}
Circle.pi = 3.14159;
var a = Circle(10);
alert(a.area());
2:
function Circle(radius) {
this.r = radius;
}
Circle.pi = 3.14159;
Circle.prototype.area = function(){
return Circle.pi * this.r * this.r;
}
var a = new Circle(10);
alert(a.area());
Второй лучше, чем первый, потому что мы не определяем ту же функцию area ни для одного экземпляра Circle .
Но давайте рассмотрим 3:
function Circle(radius) {
return {
"r" : radius,
"area" : Circle.area
}
}
Circle.pi = 3.14159;
Circle.area = function(){
return Circle.pi * this.r * this.r;
}
var a = Circle(10);
alert(a.area());
Есть ли причина предпочесть второй стиль третьему? Или я вообще что-то не понял?