Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [BLOG] Moj blog na temat front end developmentu do oceny
dufia
post
Post #1





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 27.02.2010

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


Hej!

moj blog [zmoderowane]

Jakis czas temu rozpoaczalem nauke web developmentu, wtedy postanowilem, ze zaloze sobie bloga i bede tam wrzucal jakies ciekawe linki, czasami sam cos naskrobie. Ostatnio zrobilem spory update i pomyslalem, ze wrzuce gdzies link zeby to komus pokazac (IMG:style_emoticons/default/smile.gif)

Blog na wordpressie, jest po angielsku. Jest tez responsive wiec jak macie smartfony albo tablety to mozecie powiedziec jak sie sprawuje (IMG:style_emoticons/default/smile.gif)

Licze na jakies ciekawe opinie, ciagle sie ucze i wielu podstaw jeszcze nie opanowalem (IMG:style_emoticons/default/smile.gif)
Powód edycji: [nospor]:
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
lukasz1985
post
Post #2





Grupa: Zarejestrowani
Postów: 205
Pomógł: 43
Dołączył: 5.03.2012

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


[JAVASCRIPT] pobierz, plaintext
  1. /*
  2.   * Problem polega na tym, że nie można do funkcji wysłać referencji metody dziedziczonej obiektu bez uprzedniego wiązania
  3.   * jej w jakiś sposób z bieżącym kontekstem lub kontekstem prototypu bieżącego obiektu.
  4.   * Jedynym rozwiązaniem jest utworzenie nowej funkcji ze związanym kontekstem
  5.   * i przypisanie jej do pola bieżącego obiektu - wykonane w punkcie (1) co wiąże się
  6.   * z marnowaniem pamięci, lub użycie prototypu bieżącego obiektu i przypisanie metody ze związanym
  7.   * kontekstem do właściwego pola (2), co nie jest rozwiązaniem prawidłowym ze względu na złe umieszczenie
  8.   * metody w łańcuchu dziedziczenia.
  9.   * Jest to poważny problem ponieważ przez to niemożliwe jest pełne programowanie
  10.   * wieloparadygmatowe JS (funkcyjne i obiektowe).
  11.   * Na marginesie: nawet w C++, który nie jest uznawany za język z programowaniem funkcyjnym
  12.   * jest to możliwe.
  13.   */
  14.  
  15.  
  16. function wykonajInna(funkcja) {
  17. funkcja();
  18. }
  19.  
  20. // Zwierze
  21. function Zwierze() {
  22. this.iloscDzieci = 0;
  23. }
  24. Zwierze.prototype = new Object();
  25.  
  26.  
  27. Zwierze.prototype.rozmnoz = function() {
  28. console.log("Rozmnazanie");
  29. this.iloscDzieci += 1;
  30. }
  31.  
  32. // Kurczak
  33. function Kurczak() {
  34. this.jajka = 5;
  35. }
  36. Kurczak.prototype = new Zwierze();
  37.  
  38.  
  39.  
  40.  
  41. var kurczak = new Kurczak();
  42.  
  43. function wykonajTest() {
  44.  
  45. console.log("---------------------------------------------")
  46. console.log("wykonajInna(kurczak.glos)")
  47.  
  48. console.log("kurczak ma: " + kurczak.iloscDzieci + " dzieci");
  49. wykonajInna(kurczak.rozmnoz);
  50. console.log("kurczak ma: " + kurczak.iloscDzieci + " dzieci");
  51.  
  52. console.log("---------------------------------------------")
  53. console.log("kurczak.rozmnoz()")
  54. console.log("kurczak ma: " + kurczak.iloscDzieci + " dzieci");
  55. kurczak.rozmnoz();
  56. console.log("kurczak ma: " + kurczak.iloscDzieci + " dzieci");
  57. }
  58.  
  59.  
  60.  
  61. // Klient
  62.  
  63.  
  64. // Pierwsze wykonanie testu, bez przypisywania metody do kontekstu bieżącego obiektu
  65. console.log("Test pierwszy - bez zmiany kontekstu ===========================");
  66.  
  67. wykonajTest();
  68.  
  69.  
  70.  
  71. // Przypisanie metody do kontekstu obiektu i wykonanie testu - wynik prawidłowy ale
  72. // kurczak i każdy obiekt, typu Kurczak muszą mieć przypisaną właściwość - funkcję do
  73. // kontekstu, co wiąże sie z marnotrastwem pamięci.
  74. console.log("Test - funkcja związana z kontekstem ==============================");
  75.  
  76. var kurczakRozmnoz = kurczak.rozmnoz; // Zapisanie zmiennej na czas testu, żeby przywrócić później
  77. kurczak.rozmnoz = kurczak.rozmnoz.bind(kurczak); // (1) trzeba powtorzyć dla każdego kurczaka
  78. wykonajTest();
  79. kurczak.rozmnoz = kurczakRozmnoz;
  80.  
  81.  
  82. // Alternatywnie można użyć kontekstu bieżącego prototypu. Ale znów nie jest to idealne.
  83. console.log("Test pierwszy - kontekst prototypu ===========================");
  84. Kurczak.prototype.rozmnoz = Zwierze.prototype.rozmnoz.bind(Kurczak.prototype); // (2) rozmnoz w prototypie Kurczaka zamiast Zwierzęcia.
  85. wykonajTest()
[JAVASCRIPT] pobierz, plaintext


Poza tym, chyba każdy widzi jak niepotrzebnie zawiły jest ten język.

Ten post edytował lukasz1985 1.12.2013, 16:04:39
Go to the top of the page
+Quote Post

Posty w temacie


Closed TopicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 16.10.2025 - 07:04