Skocz do zawartości

Zdjęcie
- - - - -

Organizacja kodu JS


Najlepsza odpowiedź writen, 21 wrzesień 2015 - 15:20

W tym przypadku słówko this wskazuje na element, który został kliknięty.

Możesz tą metodę wywołać po prostu tak: Locate.setAttributes()

Przejdź do postu


2 odpowiedzi w tym temacie
  • Zaloguj się, aby dodać odpowiedź
przemoo83

    Stary wyjadacz

  • PipPipPip
  • 316 postów
    • Czas spędzony online: 24d 21h 32m 26s
46
Bardzo dobra

Napisano 21 wrzesień 2015 - 08:24

#1

Mam sobie taki obiekt z jedną metodą:

var Locate = {
	getMousePos: function(evt) {	
        mouseX = evt.layerX-5;
	mouseY = evt.layerY-5;
	path.push(mouseX, mouseY);
	var circle = document.createElementNS('http://www.w3.org/2000/svg','circle');
	board.appendChild(circle);
	setAttributes(circle, {'class':'marker','cx': mouseX, 'cy': mouseY, 'r':'2', 'fill': 'red'});
	}
};

board.addEventListener('click',Locate.getMousePos,false);

wewnątrz tej metody korzystam z funkcji pomocniczej:

function setAttributes(el, attrs) {
  for(var key in attrs) {
  el.setAttribute(key, attrs[key]);
 }
};

wszystko działa ok ale w celu lepszej organizacji kodu chciałem sobie tę funkcję pomocniczą władować do tego obiektu jako kolejną metodę. Próbowałem coś takiego:

var Locate = {
	getMousePos: function(evt) {	
        mouseX = evt.layerX-5;
	mouseY = evt.layerY-5;
	path.push(mouseX, mouseY);
	var circle = document.createElementNS('http://www.w3.org/2000/svg','circle');
	board.appendChild(circle);
	this.setAttributes(circle, {'class':'marker','cx': mouseX, 'cy': mouseY, 'r':'2', 'fill': 'red'});
	},
setAttributes: function(el, attrs) {
  	for(var key in attrs) {
    	el.setAttribute(key, attrs[key]);
 	}
}
};

no ale oczywiście nie działa. Da się to jakoś rozwiązać czy ta funkcja pomocnicza musi być wywołana na zewnątrz?


  • 0

writen

    Stary wyjadacz

  • 458 postów
    • Czas spędzony online: 29d 22h 56m 1s
133
Znakomita!

Napisano 21 wrzesień 2015 - 15:20   Najlepsza odpowiedź

#2

W tym przypadku słówko this wskazuje na element, który został kliknięty.

Możesz tą metodę wywołać po prostu tak: Locate.setAttributes()


  • 4

logo-green-dark.png


przemoo83

    Stary wyjadacz

  • PipPipPip
  • 316 postów
    • Czas spędzony online: 24d 21h 32m 26s
46
Bardzo dobra

Napisano 22 wrzesień 2015 - 07:48

#3

Faktycznie. Wiecznie nie umiem dojść do ładu z tym "thisem". Dzięki:)


  • 0





Podone tematy Collapse

Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych