Εξαγωγή αντικειμένου σε modules μέσω closures σε JavaScript
Ας υποθέσουμε ότι έχουμε το ακόλουθο module:
;(function() {
function func1() {
alert('module function');
}
function func2() {
alert('module function');
}
function func3() {
alert('module function');
}
})();
Ας υποθέσουμε ότι θέλουμε να εξάγουμε και τις τρεις συναρτήσεις. Σε αυτή την περίπτωση, για να μην δημιουργήσουμε εκτός module περιττά ονόματα συναρτήσεων, είναι καλύτερα να γράψουμε όλες τις συναρτήσεις σε ένα αντικείμενο και να εκτελέσουμε εξαγωγή αυτού του αντικειμένου:
;(function() {
function func1() {
alert('module function');
}
function func2() {
alert('module function');
}
function func3() {
alert('module function');
}
window.module = {func1: func1, func2: func2, func3: func3};
})();
Δεδομένου ότι τα ονόματα των κλειδιών και των μεταβλητών συμπίπτουν, το αντικείμενο με τις συναρτήσεις μπορεί να απλοποιηθεί:
;(function() {
function func1() {
alert('module function');
}
function func2() {
alert('module function');
}
function func3() {
alert('module function');
}
window.module = {func1, func2, func3};
})();
Μπορούμε να ακολουθήσουμε και έναν άλλο δρόμο. Θα γράψουμε τις συναρτήσεις στο αντικείμενο αμέσως κατά την περιγραφή της συνάρτησης, έτσι:
;(function() {
let module = {};
module.func1 = function() {
alert('module function');
}
module.func2 = function() {
alert('module function');
}
module.func3 = function() {
alert('module function');
}
window.module = module;
})();
Δίνεται το ακόλουθο module:
;(function() {
let str1 = 'module variable';
let str2 = 'module variable';
let str3 = 'module variable';
function func1() {
alert('module function');
}
function func2() {
alert('module function');
}
function func3() {
alert('module function');
}
function func4() {
alert('module function');
}
function func5() {
alert('module function');
}
})();
Εξαγάγετε προς τα έξω ένα αντικείμενο με τις πρώτες πέντε συναρτήσεις και τις πρώτες δύο μεταβλητές.