Я собрал их вместе с помощью других и нескольких ресурсов. Я сделал скрипку всего , а урезанный код выложен ниже.
По сути, я научился использовать каждый из этих шаблонов, но мне любопытно узнать о более фундаментальных различиях между этими подходами. Нисходящий код практически идентичен любому из этих шаблонов, но есть ли причина, по которой следует использовать один над другим, помимо личных предпочтений? Кроме того, хотя я пытался собрать наиболее распространенные шаблоны, предложите свой, если он будет лучше.
Шаблон 1 (на основе объектов):
var mouseDiff = {
"startPoint" : {"x" :0, "y" : 0},
"hypotenuse" : function(a,b) {
// do something
},
"init" : function(){
// do something
}
}
mouseDiff.init();
Шаблон 2 (самый традиционный, насколько мне известно):
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();
Шаблон 3 (Использование замыкания):
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();