Jump to content

Photo
- - - - -

Organizacja kodu JS


Best Answer writen, 21 September 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()

Go to the full post


2 replies to this topic
  • Please log in to reply
przemoo83

    Stary wyjadacz

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

Posted 21 September 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 posts
    • Czas spędzony online: 29d 22h 59m 44s
133
Znakomita!

Posted 21 September 2015 - 15:20   Best Answer

#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 posts
    • Czas spędzony online: 24d 21h 32m 26s
46
Bardzo dobra

Posted 22 September 2015 - 07:48

#3

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


  • 0





Podone tematy Collapse

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users