Constructor Pattern

Constructor Pattern
A constructor is used to create specific types of objects -both preparing the object for use and accepting arguments which a constructor can use to set properties and methods when the object first created.
Object Creation
The three common ways to create new objects in JavaScript are as follows:

var newObject = {};
var newObject = Object.create( Object.prototype );
var newObject = new Object();

There are then four ways in which keys and values can then be assigned to an object:
a) Dot syntax

//Set Properties
newObject.someKey = "Hello World";
//Get Properties
var value = newObject.someKey;

b) Square bracket syntax

//Set Properties
newObject["someKey"] = "Hello World";
//Get Properties
var value = newObject["someKey"];

c) Object.defineProperty

//Set Properties
Object.defineProperty( newObject, "someKey", {
value: "more control",
writable: true,
enumerable: true,
configurable: true
});

OR

var defineProp = function ( obj, key, value){
var config = {
value: value,
writable:true,
enumerable: true,
configurable: true,
};
Object.defineProperty( obj, key, config );

So in order to use this we have to create an empty "person" object

var person = Object.create(Object.prototype);
//Populate the object with properties
defineProp( person, "car". "Delorean" );
defineProp(person, "dateOfBirth", "1981" );
defineProp( person, "hasBeard", false );
console.log(person);

 
Constructors With Prototypes
When we call a constructor to create an object then we can access all the constructor's properties through prototype.

function Car( model, year, miles ) {
this.model = model;
this.year = year;
this.miles = miles;
};
// Note here that we are using Object.prototype.newMethod rather than
// Object.prototype so as to avoid redefining the prototype object
Car.prototype.toString = function () {
return this.model + " has done " + this.miles + " miles";
};
// Usage:
var civic = new Car( "Honda Civic", 2009, 20000 );
var mondeo = new Car( "Ford Mondeo", 2010, 5000 );
console.log( civic.toString() );
console.log( mondeo.toString() );

Above, a single instance of toString() will now be shared between all of the Car objects

Σχόλια