Escolhendo um padrão OOP em javascript
Reuni essas informações com a ajuda de outras pessoas e de vários recursos. Eu fiz um violino de tudo, e o código simplificado é publicado abaix
Basicamente, eu aprendi a usar cada um desses padrões, mas estou curioso sobre as diferenças mais fundamentais entre essas abordagens. O código a jusante é praticamente idêntico a qualquer um desses padrões, mas há uma razão pela qual alguém deve usar um sobre o outro, além da preferência pessoal? Além disso, embora eu tenha tentado reunir os padrões mais comuns, sugira o seu, se for melho
Padrão 1 (baseado em objeto):
var mouseDiff = {
"startPoint" : {"x" :0, "y" : 0},
"hypotenuse" : function(a,b) {
// do something
},
"init" : function(){
// do something
}
}
mouseDiff.init();
Padrão 2 (o mais tradicional até onde eu sei):
function MouseDiff() {
this.startPoint = {"x" :0, "y" : 0};
}
MouseDiff.prototype.hypotenuse = function(a,b) {
// do something
}
MouseDiff.prototype.init = function() {
// do something
}
var myMouse = new MouseDiff;
myMouse.init();
Padrão 3 (Fazendo uso do fechamento):
var MouseDiff2 = (function() {
var startPoint = {"x" :0, "y" : 0};
var hypotenuse = function(a,b) {
// do something
};
return {
hypotenuse: hypotenuse,
init : function(){
// do something
}
};
}());
MouseDiff2.init();