सहायक कार्यों के लिए अनुशंसित दृष्टिकोण क्या है? मैं अपनी नई "क्लास" बनाने के लिए एक तकनीक चुनना चाहता हूं, और इसके साथ चलना चाहता हूं।
यहाँ डिज़ाइन विकल्प दिए गए हैं जिन्हें मैंने इंगित किया है:
विकल्प 1: बाहरी दायरे में हेल्पर फ़ंक्शन, उदाहरण के संदर्भ में आह्वान करें
function createPane (pane) {
// logic to create pane
var proto = Object.create(this.paneList);
$.extend(paneProto, pane);
return paneProto;
}
Panes.prototype.initialize = function (panes) {
var _this = this;
_.each(panes, function () {
_this.panes.push(createPane.call(_this, this));
});
}
- पेशेवरों: सरल वाक्यविन्यास।
createPaneउदाहरण पर प्रकाशित नहीं किया जाता है। - विपक्ष:
createPaneअन्य scopes में सुलभ है।
विकल्प 2: बंद करने में सहायक कार्य, उदाहरण के संदर्भ में आह्वान करें
Panes.prototype.initialize = (function () {
function createPane (pane) {
// same logic as last createPane
}
return function (panes) {
// same logic as before - calls createPane
}
})();
- पेशेवरों:
createPaneउदाहरण पर प्रकाशित नहीं किया गया है। - विपक्ष: कम पठनीयता और परीक्षणशीलता; इस हेल्पर का परीक्षण आरंभ के दायरे में होना चाहिए।
विकल्प 3: एक निजी पद्धति को इंगित करने के लिए नाम के लिए Prepend _
Panes.prototype._createPane = function (pane) {
// same logic as last createPane
}
Panes.prototype.initialize = function (panes) {
// same logic as last, except calls this._createPane
}
- पेशेवरों:
_createPaneउदाहरण का संदर्भ है। बाहर से परीक्षणशीलता। - विपक्ष: उदाहरण के लिए एक्सपोजर सहायक समारोह।
विकल्प 4: हेल्पर तर्क के रूप में कार्य करता है
Panes.prototype.initialize = (function (createPane) {
return function (panes) {
// same logic as before - calls createPane
}
})(function createPane () {
// same logic as last createPane
});
- पेशेवरों:
createPaneउदाहरण पर प्रकाशित नहीं किया गया है। हेल्पर कार्यों में एक-दूसरे तक पहुंच की कमी होती है। - विपक्ष: कम पठनीयता और परीक्षणशीलता; इस हेल्पर का परीक्षण आरंभ के दायरे में होना चाहिए।