0345 4506120

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

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

Privacy Notice

In order to provide you with the service requested we will need to retain and use your contact information in accordance with our Privacy Notice. If you choose to provide us with this information you explicitly consent to us using the information as necessary to provide the requested service to you. If you do not agree please do not proceed to request the service from us.

Marketing Permissions

Would you like to receive our newsletter and other information on products and services which we think will be of interest to you by email. We will always treat your information with care and in accordance with our Privacy Notice. You are free to withdraw this permission at any time.


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