Forum Coders' city Strona Gwna Coders' city
Nasza pasja to programowanie!
 

 PomocPomoc   SzukajSzukaj   UytkownicyUytkownicy   GrupyGrupy  RejestracjaRejestracja 
Archiwum starego forum + teoria    RSS & Panel/SideBar
 ProfilProfil   Zaloguj si, by sprawdzi wiadomociZaloguj si, by sprawdzi wiadomoci   ZalogujZaloguj 

Potrzebuj szybkiej odpowiedzi na moje pytanie... Zasady

Metoda jako argument funkcji



 
Odpowiedz do tematu    Forum Coders' city Strona Gwna -> ECMAScript
Zobacz poprzedni temat :: Zobacz nastpny temat  
Autor Wiadomo
uzytkownikxd
Go





PostWysany: Pon Wrz 28, 2015 11:39 am  OP    Temat postu: Metoda jako argument funkcji Odpowiedz z cytatem Pisownia

Cze,
chciabym przesa metod jako pointer argumentu funkcji a nastpnie wywoa t funkcj tak eby mc wywietlic warto zmiennej 'value'. Jednak po wartosc this w tej metodzie jest Window object

Kod:


      var Obj = function()
      {
        var _t = this;
        
        this.value=5999;
      }
      
      Obj.prototype.fn2 = function(){
        
        console.log(this); // to daje Window object
        //console.log(this.value); //undefined
      };
      
      
      function func(ptr){
        ptr();
      }
      
      var item =  new Obj();
      
      func(item.fn2);


Powrt do gry
lethern



Doczy: 09 Pa 2007
Posty: 1097

PostWysany: Pon Wrz 28, 2015 11:53 am      Temat postu: Odpowiedz z cytatem Pisownia

Nie jest to rozwizanie perfect, ale dziaa ;) (Moe kto wrzuci wyszej klasy)
Kod:
var Obj = function()
{
    this.value=5999;
}

Obj.prototype.fn2 = function(){
    console.log(this.value);
};


function func(ptr){
    ptr();
}

var item =  new Obj();

func( item.fn2.bind(item) );

_________________
uywasz Dev-Cpp? tools->editor options -> use tab character (wcz), smart tabs (wycz)... albo cignij np. Visual Studio C++ free.
Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo Wylij email
marcin_an



Doczy: 26 Maj 2005
Posty: 18814

PostWysany: Pon Wrz 28, 2015 12:19 pm      Temat postu: Odpowiedz z cytatem Pisownia

uzytkownikxd:
"Pointer"? To ma polsk nazw, a do tego tutaj nie bardzo wystpuje - to nie C albo C++.

Alternatywnie dla narzdzi nie wspierajcych ECMAScriptu 5:
Kod:
func(function() {
    obj.fn2();
})
To rozwizanie ma wad wydajnociow: trzyma kontekst, w ktrym func zostaa wywoana, co moe nie by porzdane w przypadku, gdy argument func bdzie duej przechowywany.

Jeeli moesz, to uyj metody bind z lodasha:
Kod:
func(_.bind(obj.fn2, obj))
Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo
Wywietl posty z ostatnich:   
Odpowiedz do tematu    Forum Coders' city Strona Gwna -> ECMAScript Wszystkie czasy w strefie CET (Europa)

Strona 1 z 1

 
Skocz do:  
Moesz pisa nowe tematy
Moesz odpowiada w tematach
Nie moesz zmienia swoich postw
Nie moesz usuwa swoich postw
Nie moesz gosowa w ankietach
Moesz dodawa zaczniki na tym forum
Moesz pobiera pliki z tego forum




Debug: strone wygenerowano w 0.08334 sekund, zapytan = 11
contact

| Darmowe programy i porady Jelcyna | Tansze zakupy w Helionie | MS Office Blog |