[JavaScript] Callback nie ma dostępu to this |
[JavaScript] Callback nie ma dostępu to this |
3.03.2021, 14:00:17
Post
#1
|
|
Grupa: Zarejestrowani Postów: 531 Pomógł: 55 Dołączył: 3.01.2016 Skąd: Łowicz Ostrzeżenie: (0%) |
Piszę klasę w JS i mam problem z dostępem do this z funkcji callback EventListenera.
Czy to dlatego że ta funkcja callback nie staje się częścią wywołujacej ją klasy? kod online https://jsfiddle.net/eojfb8vc/ Kod class testObj {
constructor() { this.val = { start: 0, }; document.addEventListener( "mousedown", this.checkMouseDown ); document.addEventListener( "mouseup", this.checkMouseUp ); } checkMouseDown(event) { console.log('MOUSE DOWN #########'); console.log(this.val); this.val.start = new Date().getTime(); } checkMouseUp(event) { console.log('MOUSE UP #########'); } } let obj = new testObj(); Ten post edytował LowiczakPL 3.03.2021, 14:01:43 -------------------- Szukam zleceń Symfony, Laravel, Back-End, Front-End, PHP, MySQL ...
|
|
|
5.03.2021, 07:48:58
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
Wewnątrz listenera this wskazuje na obiekt, do którego jest on podpięty - warto czytać dokumentację.
Ten post edytował trueblue 5.03.2021, 07:49:12 -------------------- |
|
|
5.03.2021, 07:51:05
Post
#3
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) |
|
|
|
5.03.2021, 09:29:03
Post
#4
|
|
Grupa: Zarejestrowani Postów: 531 Pomógł: 55 Dołączył: 3.01.2016 Skąd: Łowicz Ostrzeżenie: (0%) |
ojjj, teraz sobie przypomniałem że dokładnie tak samo robiłem, bindowałem this, ale robiłem to tak dawno że o tym niestety zapomniałem ...
dzięki za podpowiedź i przypomnienie oczywiście napisałem sobie klasę w inny sposób aby obejść ten problem https://jsfiddle.net/9y3Lmezc/, piszę klasy w dwojaki sposób, znam te 2 sposoby Kod testObj = (function () { val = { start: 0, }; function checkMouseDown(event) { console.log('MOUSE DOWN #########'); console.log(val); val.start = new Date().getTime(); } function checkMouseUp(event) { console.log('MOUSE UP #########'); } return { init: function () { document.addEventListener( "mousedown", checkMouseDown ); document.addEventListener( "mouseup", checkMouseUp ); } } }()); testObj.init(); Mam w związku z tym pytanie, który sposób Waszym zdaniem jest lepszy, pierwszy czy drugi, niestety moja wiedza na ten temat jest ZEROWA (po prostu tak nauczyłem się pisać bez wgłębiania się dalej) jakie są plusy i minusy klas napisanych w ten sposób? Ten post edytował LowiczakPL 5.03.2021, 09:40:03 -------------------- Szukam zleceń Symfony, Laravel, Back-End, Front-End, PHP, MySQL ...
|
|
|
Wersja Lo-Fi | Aktualny czas: 25.04.2024 - 12:51 |