ג’אן ואן ריזוויק כתב סדרת פוסטים מעניינת על JavaScript. הואמ מאיר נקודות מעניינות ב-JavaScript, שמצד אחד מתאימות לאנשים שאינם בקיאים בעמקי ה-JS, ומצד שני מחדשות גם לאנשים שכן.
הוא מתחיל את הסדרה בהסבר על פונקציות, וממשיך באובייקטים. בפוסט השלישי הוא מדבר על prototype שזה נושא מעניין שאני אף פעם לא מצליחה לתפוס, וכאן הוא מסביר את זה בקצרה, עם דוגמה מעשית להבדל בין פונקציה שהמוגדרת באובייקט עצמו, לפונקציה שמוגדרת כ-prototype. בפוסט הרביעי הוא מפרט בקצרה איך להכריח את הבנאי (constructor) ליצור אובייקט חדש.
בפוסט החמישי הוא מדבר על Hoisting. ב-JavaScript, אין block scope אלא function scope. הכוונה ב-block scope היא שמשתנים המוגדרים בבלוק מסויים אינם מוכרים מחוץ לבלוק הזה. אבל function scope פירושו שכל המשתנים והפרמטרים המוגדרים בתוך פונקציה, מוכרים בכל מקום באותה פונקציה, אפילו אם משתמשים בהם לפני שהם הוגדרו. הוא מביא גודמה לתוצאות המעניינות של הדבר הזה.
בפוסט השישי, הוא מראה למה חשוב לשים את הסוגר הפותח באותה שורה של הגדרה, כדי להמנע משגיאות העלולות לנבוע מהעובדה שמנועי JavaScript שמים נקודה פסיק בסופי שורות בזמן ריצה. הפוסט השביעי מחדש חידוש: איך ליצור מתודות ומשתנים סטטיים ב-JavaScript, בלי שיש לזה תחביר מיוחד כמו בשפות אחרות כגון #C. בפוסט השמיני הוא מתאר איך ליצור namespace-ים.
בפוסט התשיעי, ואן ריזוויק מגלה לנו איך אפשר להשתמש במתודה של אובייקט אחד, עם אובייקט אחר. זה נעשה ע”י שימוש בפונקציה ()call.
שלושת הפוסטים האחרונים הם ברמה קצת יותר גבוהה: תבנית המודול שמראה איך לסגור קוד JS באופן כזה שאפשר לסמוך על היישום שלו בבלוק הזה ובלי לחשוש שמישהו ידרוס את היישום; אתחול פונקציונלי שמסביר איך שורת קוד אחת גם בודקת קיום של תגית ב-DOM וגם יוצרת אותה אם היא לא קיימת; והפוסט האחרון מסביר את ההבדל בין גבולות הגזרה של פונקציה שמוגדרת כך:
var functionExpression = function() {
לפונקציה שמוגדרת כך:
function functionDeclaration() {
בסה"כ כל פוסט הוא די קצר. מומלץ.