0845 450 6120

Advanced JavaScript Workshop

Damjan Vujnovic's Advanced JavaScript Workshop

Would you like to learn how to write great JavaScript code? Keen to learn how to employ JavaScript's fantastic features and avoid its 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 and you'll learn how to write your own object-oriented code, to apply asynchronous and event-driven patterns, and to use behaviours and stay unobtrusive.

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

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.


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!


Learning Objectives

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



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.

Bring your own hardware

To participate in this course you are required to bring your own laptop so you can develop with your own tools and IDE.

Course Content

Introduction to unit testing (Jasmine)

JSLint (will hurt your feelings)


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


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


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


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

Unit testing asynchronous code


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

Asynchronous programming patterns

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


  • 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

One Month
Two Months
Three Months
More than Three Months
PRINCE2 Foundation & Practitioner
MSP Foundation & Practitioner
APMP Certificate
ITIL Foundation
Scrum in One Day
Certified ScrumMaster
ISTQB Software Test Foundation
Microsoft Project
BCS Business Analysis Practice
Other - Please Specify Below

Online Courses

You may prefer an online course if you are looking for a flexible and cost-effective solution. Online courses allow you to study at your own pace, at a time that suits you.

We have the following eLearning options available:

Our Customers Include