JavaScript idzie w dobrym kierunku

Opublikowane przez Jarosław Zabiełło Mon, 13 Nov 2006 16:56:00 GMT

Muszę przyznać, że od czasu grzebania w bibliotece Prototype spojrzałem w trochę świeży sposób na język JavaScript. Prototype jest przykładem tego, jak bardzo elegancki, dynamiczny i obiektowy kodu można pisać w tym języku. Pozwala też na pisanie bardzo eleganckiego kodu mocno przypominającego język Ruby

Np. poniższy kod wyświetla cztery razy okienko alertu. (Odpowiednikiem bloku kodu (ang. closure) w Ruby jest tu anonimowa funkcja).

(4).times(function() {
  alert("JavaScript is cool")
});

Co ciekawe, w JavaScript (podobnie jak Ruby) można przeciążać wszystkie obiekty. Np. poniżej do klasy Array dodano metodę inArray.

Array.prototype.inArray = function(needle) {
  for(var key in this) {
    if (this[key] === needle) {
      return true
    }
  }
  return false
}

JavaScript posiada też wbudowany operator do wyrażeń regularnych. Np. poniższy kod sprawdza poprawność pola w formularzu:

<script type="text/javascript">
//<![CDATA[
var MyForm = {
  validateEmail: function() {
    if ($F('email_id').match(/^.+?@([\w\d\.-]+?\.\w{2,5})\s*$/)) {
      $('email_error').innerHTML = '';
      return true;
    } else {    
      $('email_error').innerHTML = 'Wrong email format!';
      return false;
    }
  },
  validateForm: function() {
    return this.validateEmail() ? true: false;
  }
};
//]]>
</script>
<form action="" method="post" onsubmit="return MyForm.validateForm()">
  <table border="0" id="container">
    <tr>
      <th><label for="email_id">Email Adddress:</label></th>
      <td>
        <input type="text" id="email_id" onchange="MyForm.validateEmail()" />
        <span id="email_error"></span>
      </td>
    </tr>
    <tr>
      <td colspan="2"><input id="submit" type="submit" /></td>
    </tr>
  </table>
</form>

Jakby tego było mało, JavaScript w nadchodzącej wersji 1.7 przejmuje trochę wygodnej składni Pythona!

Szkoda, że taki popularny PHP wzoruje się na brzydkiej składni Perla, C++ i Javy. JavaScript wybrał sobie znacznie bardziej eleganckie wzorce.

Tagi ,  | 7 comments

Comments

  1. Avatar Sabistik powiedział about 4 hours later:

    A jednak wole tą ‘brzydką’ składnie.

  2. Avatar mlen powiedział about 5 hours later:

    “Brzydka” składnia do lamusa!

    Jarek, gdybyś nie znał jeszcze, polecam zapoznac się również z jQuery (http://jquery.com/).

    Oraz w ramach ciekawostek JSOC (JavaScript Object Cache) dostępny na http://dev.webframeworks.com/projects

    ;-)

  3. Avatar rsz powiedział about 23 hours later:

    Korekta: blok kodu to nie to samo, co closure. Blok kodu jest pojęciem specyficznym dla (m.in.) Ruby’ego, a closure to domknięcie, zasadniczo technika implementacji (chociaż często nadużywane jako synonim) zagnieżdżonych, dynamicznych zakresów leksykalnych (np. funkcji).

    BTW zawsze uważałem, że JS to ładny, niedoceniony język.

    A słabość PHP IMHO wynika głównie z beznadziejnej semantyki (porównania np., to woła o pomstę do nieba) i biblioteki standardowej (totalny śmietnik, do tego wszystko w jednej przestrzeni nazw), a nie z wyglądu kodu (składni).

  4. Avatar blas powiedział 3 days later:

    Cześć, trochę nie na temat, ale próbowałem klinąć na górze w http://zabiello.com/contact i mój FF v.2.0 po prostu zaliczył zwieche.

    Po odtworzeniu sesji przeglądarki było to samo. Dopiero jak z pliku sesji wykasowałem Twoją stronę wszystko poszło ok, więc chyba coś z tym contact jest nie tak

  5. Avatar blas powiedział 3 days later:

    Jeszcze coś, czy jest jakiś problem z czasem na serwerze? Przy moim poście widnieje 3 days later, a postowałem 1 minutę temu.

  6. Avatar Jarosław Zabiełło powiedział 3 days later:

    FF się wywalił pewnie przez aplet Javy (z polchatu). Wywaliłem go. Powinno pomóc.

  7. Avatar blas powiedział 4 days later:

    Jeszcze nie sprawdzałem, bo mam tu troche rzeczy na wierzchu, ale coś tam jest jeszcze na rzeczy z czasem na serwerze chyba. Tak jak byś miał już 20 listopada.

(leave url/email »)

   Pomoc języka formatowania Obejrzyj komentarz