• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jak zastosować tutaj funkcje bind ?

+1 głos
110 wizyt
pytanie zadane 11 listopada 2016 w JavaScript, jQuery, AJAX przez subterras Użytkownik (680 p.)

Mam taki kod, nie działa mi odwołanie do this.odpowiedz(); domyślam się że trzeba tutaj użyć binda ale nie wiem dokładnie jak to działa i jakbym miał to zrobić żeby działa, więc jakby ktoś miał pomysł to poproszę. Jest to tylko część kodu. I takie pytanie, tak gdzie używam var , może to tak zostać czy jak piszę w ten sposób unikać czegoś takiego ? 

 

String.prototype.escapeDiacritics = function()
	{
	    return this.replace(/ą/g, 'a').replace(/Ą/g, 'A')
	        .replace(/ć/g, 'c').replace(/Ć/g, 'C')
	        .replace(/ę/g, 'e').replace(/Ę/g, 'E')
	        .replace(/ł/g, 'l').replace(/Ł/g, 'L')
	        .replace(/ń/g, 'n').replace(/Ń/g, 'N')
	        .replace(/ó/g, 'o').replace(/Ó/g, 'O')
	        .replace(/ś/g, 's').replace(/Ś/g, 'S')
	        .replace(/ż/g, 'z').replace(/Ż/g, 'Z')
	        .replace(/ź/g, 'z').replace(/Ź/g, 'Z');
	}

var talk = {
	array:[],
	array2:[],
	init:function(){
		this.cacheDom();
		this.observeCon();
	},
	observeCon:function(){
		var target = document.getElementById('chat');
		var config = { attributes: true, childList: true, characterData: true };

		var observer = new MutationObserver(function(mutations) {
		  mutations.forEach(function(mutation) {
		    if(mutation.addedNodes[0].childNodes[0].childNodes[0]..data=="Rozmówca"){
		    	var wiadomosc = mutation.addedNodes[0].childNodes[0].childNodes[2].childNodes[0].data;
		    	var wiadom = wiadomosc.escapeDiacritics();
		    	var wiad = wiadom.toUpperCase();
		    	this.odpowiedz(wiad);
		    }
		  });    
		});

		observer.observe(target,config);
	},
	odpowiedz:function{
		console.log("dziala");
	}
};

talk.init();

 

komentarz 11 listopada 2016 przez JSHolic Szeryf (78,320 p.)

 takie pytanie, tak gdzie używam var , może to tak zostać czy jak piszę w ten sposób unikać czegoś takiego ?  

Jeśli masz na myśli var talk = {, to jak najbardziej może - to po prostu zapis obiektowy i korzystanie z pół oraz metod.

1 odpowiedź

+2 głosów
odpowiedź 11 listopada 2016 przez JSHolic Szeryf (78,320 p.)

W linijce następującej po 21: observeCon:function(){

zapisz 

var self = this;

 i zamiast 

this.odpowiedz(wiad); 

zapisz 

self.odpowiedz(wiad);

@Comandeer tłumaczył zachowanie this dla zagnieżdżonych funkcji w tym temaciehttp://forum.pasja-informatyki.pl/51989/jak-zapisac-this-podczas-tworzenia-obiektu-bez-konstruktora?show=52015#a52015

Zamiast bawić się w self / this możesz użyć Arrow function, które nie zmieniają kontekstu dla this - czyli nadal wskazuje on na obiekt, na rzecz którego wywołałeś funkcję/metodę.

komentarz 11 listopada 2016 przez subterras Użytkownik (680 p.)
Dzięki wielkie, zapoznam się z tym :)

Podobne pytania

0 głosów
1 odpowiedź 100 wizyt
pytanie zadane 27 grudnia 2018 w JavaScript, jQuery, AJAX przez Arcix Nowicjusz (160 p.)
0 głosów
0 odpowiedzi 64 wizyt
0 głosów
1 odpowiedź 132 wizyt
pytanie zadane 24 października 2017 w JavaScript, jQuery, AJAX przez szustka124 Gaduła (4,420 p.)
Porady nie od parady
Forum posiada swój własny chat IRC, dzięki któremu będziesz mógł po prostu pogadać z innymi Pasjonatami lub zapytać o jakiś problem. Podstrona z chatem znajduje się w menu pod ikoną człowieka w dymku.IRC

63,334 zapytań

109,593 odpowiedzi

228,944 komentarzy

44,061 pasjonatów

Przeglądających: 238
Pasjonatów: 24 Gości: 214

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...