Passando configurações de módulo através de closures em JavaScript
Suponha que temos o seguinte módulo:
;(function(root, type, amount) {
let parent = document.querySelector(root);
for (let i = 1; i <= amount; i++) {
let elem = document.createElement(type);
parent.append(elem);
}
})('#parent', 'p', 5);
Como você pode ver, três configurações são passadas para este módulo: o seletor do elemento pai, o tipo de elemento a ser criado e a quantidade de elementos.
Geralmente, tais configurações são feitas na forma de um objeto:
let config = {
root: '#parent',
type: 'p',
amount: 5
}
Vamos passar nosso objeto como parâmetro para o módulo:
;(function(config) {
let parent = document.querySelector(config.root);
for (let i = 1; i <= config.amount; i++) {
let elem = document.createElement(config.type);
parent.append(elem);
}
})(config);
É mais comum realizar a desestruturação do objeto de configurações:
;(function({root, type, amount}) {
let parent = document.querySelector(root);
for (let i = 1; i <= amount; i++) {
let elem = document.createElement(type);
parent.append(elem);
}
})(config);