JavaScript idzie w dobrym kierunku
Posted by 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.


Kanały IRC![[Dilber w Onecie]](/images/larry.png)


A jednak wole tą ‘brzydką’ składnie.
“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
;-)
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).
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
Jeszcze coś, czy jest jakiś problem z czasem na serwerze? Przy moim poście widnieje 3 days later, a postowałem 1 minutę temu.
FF się wywalił pewnie przez aplet Javy (z polchatu). Wywaliłem go. Powinno pomóc.
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.