Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> This w onClick
Yorki
post
Post #1





Grupa: Zarejestrowani
Postów: 45
Pomógł: 2
Dołączył: 12.09.2005

Ostrzeżenie: (0%)
-----


Witam, mam problem, tak mniej więcej wygląda struktura mojej "klasy":

  1. function Lib(){
  2. this.init = function(c){
  3. c.onmousemove = this.mouseMove;
  4. }
  5. this.mouseMove = function(e){
  6. if (this.getElementByCursor(e.clientX, e.clientY)){
  7. document.body.style.cursor = "pointer";
  8. }
  9. }
  10. this.getElementByCursor(x,y){
  11. //
  12. }
  13. }


Problem jest w CYLib.mouseMove, to this powinno się odnosić do Lib, a nie do obiektu z którego wywołane jest onClick. Jak odwołać się do Lib?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


@kamil4u: Jak już to var that = this; - w takich przypadkach nie zależy nam na tym by właściwość ta była publiczna.

Cytat
Ale co to daje? Nic. Bo nie odwołam się przez this.that ..
W takim przypadku nie odwołujesz się przez this.that, a samo that, które jest referencją do pożądanego przez Ciebie obiektu/kontekstu.

Co do Function.call()
[JAVASCRIPT] pobierz, plaintext
  1. function Lib() {
  2. var self = this;
  3.  
  4. this.init = function(c) {
  5. c.onmousemove = function(e) {
  6. self.mouseMove.call(self, e);
  7. }
  8. }
  9.  
  10. this.mouseMove = function(e){
  11. if (this.getElementByCursor(e.clientX, e.clientY)){
  12. document.body.style.cursor = "pointer";
  13. }
  14. }
  15. this.getElementByCursor(x,y){
  16. //
  17. }
  18. }
[JAVASCRIPT] pobierz, plaintext


EDIT: Ale w sumie, lepiej używać już obejścia w postaci self/that - mieszanie z kontekstem wywołania obiektów w JS prędzej czy później zaczyna być męczące.

Ten post edytował Crozin 1.09.2012, 01:32:56
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 7.10.2025 - 08:42