JavaScript explained

Explaining some dark corners of JavaScript, browsers, or Dojo for the 100th time I realized that I already did it on numerous occasions, and some of my answers are published on public web sites. So I decided to round up the most general ones I posted on StackOverflow and publish links to them here for a future reference.


This section is for language-specific topics. They can be equally applied in any environment.

Prototypal inheritance

A lot of people have problems with the prototypal inheritance in general and its implementation in JavaScript. These are for you guys:

General questions

JavaScript contains some features that are puzzling even for experienced programmers coming from different languages. Some of them are clarified below:


This section is for browser-specific topics. Let’s face it: many JavaScript questions have nothing to do with the language itself, but with the container of a JavaScript interpreter.


Browser’s DOM is a source of never-ending bugs, and gotchas. I tried to answer some of them:

General questions

The collection of miscellaneous answers on all browser-related things:

Testing and debugging

The lack of testing and debugging tools is the first thing any newcomer to JavaScript complains about. In reality it is not that bad:


Like any library Dojo has its share of misunderstandings, and underdocumented features.

Using Dojo

Hints to help you use Dojo:

Why Dojo?

A legitimate question. Some answers: