- OLED monitor topik
- AMD Ryzen 9 / 7 / 5 7***(X) "Zen 4" (AM5)
- Bluetooth hangszórók
- HiFi műszaki szemmel - sztereó hangrendszerek
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- SONY LCD és LED TV-k
- AMD GPU-k jövője - amit tudni vélünk
- NVIDIA GeForce RTX 5070 / 5070 Ti (GB205 / 203)
- Vezetékes FEJhallgatók
- AMD Ryzen 9 / 7 / 5 / 3 5***(X) "Zen 3" (AM4)
-
PROHARDVER!
JavaScript != Java (A JavaScript nem összekeverendő a Javával, két különböző programozási nyelvről van szó!)
Új hozzászólás Aktív témák
-
Pala
veterán
Sziasztok!
Akad itt valaki, aki object composition (és ezzel kapcsolatos patternek, best practice-ek) terén otthonosabban mozog.
Szinte bárhol olvasok a témáról, általában a lentihez hasonló példákkal illusztrálják, hogyan is néz ez ki a gyakorlatban (ez nem az én kódom, csak példa):
const canCast = (state) => ({
cast: (spell) => {
console.log(`${state.name} casts ${spell}!`);
state.mana--;
}
})
const canFight = (state) => ({
fight: () => {
console.log(`${state.name} slashes at the foe!`);
state.stamina--;
}
})
const fighter = (name) => {
let state = {
name,
health: 100,
stamina: 100
}
return Object.assign(state, canFight(state));
}
const mage = (name) => {
let state = {
name,
health: 100,
mana: 100
}
return Object.assign(state, canCast(state));
}
scorcher = mage('Scorcher')
scorcher.cast('fireball'); // Scorcher casts fireball!
console.log(scorcher.mana) // 99
slasher = fighter('Slasher')
slasher.fight(); // Slasher slashes at the foe!
console.log(slasher.stamina) // 99Namármost, nekem ezzel az a problémám, hogy a kompozíció során minden egyes object instance új példányt kap ugyanabból a metódusból is, tehát tkp. elkezdjük szépen teleszemetelni a memóriát, kvázi feleslegesen. Kérdés, hogy:
1. El tudjuk-e ezt kerülni úgy, hogy a fenti kódban a canCast és canFight továbbra is pure function-ök maradjanak (mondjuk most a bennük lévő console.log miatt nem azok, de azt most gondolatban vegyük ki)!? (Pusztán azt elérni, hogy egy metóduson osztozzanak az instance-ek, nem nehéz.)
Épp most írok egy játékot, ahol object compositiont használok, százas nagyságrendben készülnek majd objektumok, és nem találtam igazán szép megoldást erre a problémára.
Új hozzászólás Aktív témák
- Tesla topik
- EAFC 25
- OLED monitor topik
- Tőzsde és gazdaság
- Teljes külső kijelzővel hódítana a Flip7, ami kapott egy kistestvért is
- AMD Ryzen 9 / 7 / 5 7***(X) "Zen 4" (AM5)
- Bluetooth hangszórók
- BestBuy topik
- Autós topik
- Kodi és kiegészítői magyar nyelvű online tartalmakhoz (Linux, Windows)
- További aktív témák...
- BESZÁMÍTÁS! Gigabyte H510M i5 10400F 16GB DDR4 512GB SSD RTX 2060 Super 8GB Rampage SHIVA FSP 500W
- BESZÁMÍTÁS! Gigabyte A620M R5 7500F 32GB DDR5 500GB SSD RX 6700XT 12GB Cooler Master CMP 520L 750W
- ÁRGARANCIA! Épített KomPhone i5 12400F 16/32/64GB RAM RTX 5060Ti 8GB GAMER PC termékbeszámítással
- Bomba ár! Lenovo ThinkPad T15 G1 - i5-10GEN I 16GB I 256GB SSD I 15,6" FHD Touch I Cam I W11 I Gari!
- BESZÁMÍTÁS! ÚJ AMD Ryzen 5600X 5700X 5800X 5900X processzor 3 év garancia 27% áfa termékbeszámítás
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Promenade Publishing House Kft.
Város: Budapest