3 DAY COURSE

Damjan Vujnovic's Advanced JavaScript Workshop

Topics covered at ADV-JAVASCRIPT-01-03
View Schedule & Book More dates available

Next up:

Would you like to learn how to write great JavaScript code? Keen to learn how to employ JavaScript's fantastic features and avoid it's quirks and pitfalls? Join Damjan Vujnovic for this Advanced JavaScript course and gain the skills to design, create and maintain rich web applications with JavaScript.

As Douglas Crockford once said, JavaScript is the world's most misunderstood programming language. It is also one of the world's most popular programming languages and the cornerstone of modern web application development.

In this course, we'll learn how to take advantage of JavaScript's functional and dynamic nature. You will gain an understanding of lexical scope and closure, you'll learn how to write your own object-oriented code, to apply asynchronous and event-driven patterns, to use behaviours and stay unobtrusive.

Finally, you'll learn how to unit-test your code and how to avoid common pitfalls.

Learn how to:

  • Take advantage of JavaScript's functional and dynamic nature
  • Understand lexical scope and closure
  • Unit test JavaScript code
  • Write object-oriented code
  • Avoid (some) JavaScript quirks and common pitfalls
  • Apply asynchronous and event-driven patterns
  • Use behaviors and stay unobtrusive

What the community says

"I've been on a lot of technical courses, and this has been by far the best taught in both learning and teaching style."

William Lacy on 9th Mar 2015

"Best teacher of any course I have been on. Really good how he challenged us when necessary but also made sure that nobody fell behind."

Cat Hawker on 9th Mar 2015

"Brilliant course. Damjan is seriously smart."

November 2014 Attendee on 27th Nov 2014

"Damjan was a great teacher with superb domain knowledge. Enjoyed the course immensely. "

Paddy Gallagher on 27th Nov 2014

"Thorough knowledge of the material. Very in-depth and challenging course."

November 2014 Attendee on 27th Nov 2014

About the Author

Damjan Vujnovic

It all started at the age of 12, when the secrets of C=64 machine language ignited the passion for computer programming. Today, after more than 10 years of professional experience, the sheer excitement and pride of making a new technology "work" is still driving Damjan Vujnovic every day.

Introduction to unit testing (Jasmine)

JSLint (will hurt your feelings)

Objects

  • object literals
  • default & guard operators
  • updating properties & property attributes (eval/firebug gotcha)
  • prototype
  • property enumeration
  • delete operator

Functions

  • function object
  • declaration hoisting
  • literal
  • arguments
  • invocation (4 ways)
  • return
  • recursion

Arrays

  • array literals
  • length & delete
  • for vs. for in
  • arrays vs. associative arrays
  • augmenting array prototype
  • multidimensional arrays

Functions

  • lexical scope
  • closure
  • revealing module pattern
  • bind
  • Global namespace pollution detection

Unit testing asynchronous code

OOP

  • inheritance (pseudoclassical, prototypal, functional)
  • mixins
  • overriding & super()

Asynchronous programming patterns

  • callback (asynchronous method)
  • promise/future (deferrable value)
  • observable

Functions

  • a few functional programming patterns (chaining, curry, memorization)
  • throttling
  • funneling

Advanced unit testing

  • test doubles (stubs, mocks, fake objects)
  • dom
  • tools

How does this all fit together (a component based micro-architecture featuring IOC, services & behaviours) - a small primer

Audience

If you are an experienced Web Developer and you want to learn how to design, create and maintain complex and modern rich web appiclations in JavaScript, this is the course for you!

Prerequisites

This is an advanced JavaScript course: To benefit from this course, you should have some experience using JavaScript and be familiar with HTML, DOM, CSS and Ajax.

Prior exposure to a JavaScript/Ajax framework (like JQuery which is used in a few exercises) will be helpful but is not essential.