Разбираюсь с основами ООП в js. Довольно часто натыкаюсь на имитацию классов при помощи самовызывающейся анонимной функции, например вот так:
(function (window) {
window.ballName = "Ball";
function Ball(size, weight){
this.size = size;
this.weight = weight;
this.init();
}
Ball.prototype = Object.create(Circle); //Наследуем свойства от Circle
Ball.prototype.init = function(){
}
window.Ball = Ball;
}(window));
Вот и возникает вопрос, а так ли необходима сама эта анонимная функция? Не проще ли сделать вот так?
var ballName = "Ball";
function Ball(size, weight)
{
this.size = size;
this.weight = weight;
this.init();
}
Ball.prototype = Object.create(Circle); //Наследуем свойства от Circle
Ball.prototype.init = function(){
};
Существует ли принципиальная разница между этими двумя записями? И если да, то какая?