/cdn.vox-cdn.com/uploads/chorus_image/image/46208832/scope_and_closure_720.0.0.png)
Vox University, our internal training and skill sharing initiative, hosted a two-day workshop in the DC offices this week on everyone's favorite language: JavaScript. It was a great session with seven participants, and covered everything from encapsulating Walter White's chemistry lab, to invoking exploding Deathstars, to prototypal management of Hogwarts houses.
All workshop content is available through a public repository that was originally developed for a Generally Assembly lesson. Also, we have some screen captures from the sessions that we invite you to watch! (Apologies: the recordings are unedited and missing some sections).
Day 1: Fundamentals + DOM
Screencast: https://www.youtube.com/watch?v=nRaskFr7RU8
In the morning we explored basic computer science concepts with JavaScript; including data types, variables, conditionals, and enumerations. In the afternoon we switched gears and focused on the DOM, and how it interacts with plain JavaScript.
Day 2: Functions + OO
Screencast: https://www.youtube.com/watch?v=OZ0BfrZcQXg
During our second session, we did a deep-dive into the truly unique aspect of JavaScript: functions, and their object-oriented nature. Personally, I always find this session to be fun because it explores a commonly misunderstood portion of JavaScript, and offers surprising insight into some elegant aspects of language. Over the course of the day we covered functions as first class objects, closure and scope, contextual invocation, and finally prototypal inheritance.
:no_upscale()/cdn.vox-cdn.com/uploads/chorus_asset/file/3640440/CDTRi_qUUAARsRy.0.jpg)
The Approach
This workshop takes a head-on approach to JavaScript: it teaches JavaScript as a programming language, rather than a bag of tricks. I've spoken on this approach in the past, and it seems to work: start at the beginning, and work through to the end. JavaScript can be an elegant language once we understand its paradigm.