Something I dug up while learning Javascript a long, long while ago. Here’s is an interesting article on the differences between a literal class declaration and a constructor. Essentially, the main difference is that with a literal class declaration, the object itself as well as its properties and methods are available right away:
var obj = { my_property: 'value', my_method: function () { console.log('Hello, World!'); } }; console.log(obj.my_property); // Logs 'value' obj.my_method(); // Logs 'Hello, World!'
With a Javascript constructor, the properties and methods will only be available after it’s been instantiated:
var obj = function () { this.my_property = 'value'; this.my_method = function () { console.log('Hello, World!'); }; }; var instance = new obj(); console.log(instance.my_property); // Logs 'value' instance.my_method(); // Logs 'Hello, World!'
Personally, I prefer the constructor method as you can instantiate however many of the objects you want without the Javascript reference “issue”:
var obj = { my_property: 'value', my_method: function () { console.log('Hello, World!'); } }; var obj2 = obj; obj2.my_property = 'value2'; console.log(obj2.my_property); // Logs 'value2' console.log(obj.my_property); // Also logs 'value2'!
If you prefer using the literal class declaration method, as many are, check out this post on how to copy arrays and objects in Javascript.
See davidpirek.com