Last active
May 26, 2025 10:51
-
-
Save Kcko/118848627572863d6211f2b12e396404 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const showThumbs = (() => { | |
// really private ;-) | |
const state = ref(props.enableThumbs) | |
return computed({ | |
get: () => state.value, | |
set: value => { | |
state.value = value | |
} | |
}) | |
})() | |
/* | |
----------------------------------- | |
Nejčastější použití je právě pro: | |
- Vytvoření privátního scope | |
- Enkapsulaci dat a logiky | |
- Vyhnutí se globálnímu scope | |
- Zachování stavu přes closure | |
----------------------------------- | |
* 1. Vytvoření privátního scope | |
* - proměnné uvnitř neuniknou ven | |
* - čisté API pro vnější svět | |
*/ | |
const counter = (() => { | |
let count = 0 // privátní proměnná | |
return { | |
increment() { count++ }, | |
getCount() { return count } | |
} | |
})() | |
/** | |
* 2. Vyhnutí se globálnímu scope | |
* - dočasné proměnné zůstanou lokální | |
* - neznečišťuje globální namespace | |
*/ | |
(() => { | |
const temp = 'nějaká dočasná proměnná' | |
// temp existuje jen uvnitř, neznečišťuje globální scope | |
})() | |
/** | |
* 3. Modulární pattern | |
* - privátní metody a proměnné | |
* - veřejné API | |
*/ | |
const module = (() => { | |
const privateVar = 'private' | |
const privateMethod = () => { | |
console.log(privateVar) | |
} | |
return { | |
publicMethod() { | |
privateMethod() // má přístup k privátním věcem | |
} | |
} | |
})() | |
/** | |
* 4. Closure pro zachování stavu | |
* - privátní stav | |
* - reaktivní hodnota | |
*/ | |
const showThumbs = (() => { | |
const state = ref(props.enableThumbs) // privátní stav | |
return computed({ | |
get: () => state.value, | |
set: (value) => { | |
state.value = value | |
} | |
}) | |
})() | |
/** | |
* 5. Vyhnutí se konfliktům | |
* - lokální aliasy | |
* - izolace kódu | |
*/ | |
(() => { | |
const $ = jQuery // lokální alias pro jQuery | |
// používání $ uvnitř neovlivní jiné knihovny používající $ | |
})() | |
/** | |
* 6. Inicializace | |
* - nastavení při načtení | |
* - konfigurace | |
* - event listenery | |
*/ | |
(() => { | |
// nějaká inicializace | |
const config = { | |
apiKey: 'xxx', | |
endpoint: 'https://api.example.com' | |
} | |
// nastavení event listenerů | |
document.addEventListener('DOMContentLoaded', () => { | |
// inicializace UI | |
}) | |
// další setup | |
const init = () => { | |
// ... | |
} | |
init() | |
})() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment