HTML and CSS Reference
In-Depth Information
return "bau";
What you have here is a new object named Dog . Early on, when talking about objects, you also
created something similar:
var dog = {
name: "Jerry Lee Esposito",
The big difference here is that the latter code snippet represents a snapshot of only data; the
former code snippet, instead, is a function with data and behavior.
So how would you use the Dog object? To use the Dog object, you need to instantiate it using the
classic new constructor, as shown below:
var jerry = new Dog("jerry");
What if you miss the new operator and go with something like this?
var jerry = Dog("jerry");
The tricky thing is that if you forget to use the new operator, you won't get any exception and your
code will just run. However, any action you perform on Dog (for example, setting the name property)
will be executed on the this object. Without the new operator in front, that would be resolved as the
global JavaScript object. This means that you are polluting the global namespace of the JavaScript
interpreter. Here's a safe countermeasure that doesn't create issues whether or not you use the new
var Dog = function(name) {
var that = {}; = name;
that.bark = function() {
return "bau";
return that;
The difference is that you now explicitly create and return a new object—an object named that .
This is familiarly known as the “Use-That-Not-This” pattern.
Search WWH ::

Custom Search