//factory model:
function createPerson(name, age, job) {
var o = new Object();
o.name = name;
o.age = age;
o.job = job;
o.sayName = function () { alert(this.name); };
return o;
}
//constructor model:
function Person(name, age, job) {
this.name = name;
this.age = age;
this.job = job;
this.sayName = function () { alert(this.name); };
}
//prototype model
function Person() { }
Person.prototype.name = "roy";
Person.prototype.age = 29;
Person.prototype.job = "software engineer";
Person.prototype.sayName = function () { alert(this.name); };
//mix constructor model and prototype model
function Person(name, age, job) {
this.name = name;
this.age = age;
this.job = job;
this.friends = ["roy","angel"];
}
Person.prototype = {
constructor: Person,
sayName: function () { alert(this.name); }
}
//dynamically prototype model
function Person(name, age, job) {
//properties
this.name = name;
this.age = age;
this.job = job;
//methods
if (typeof this.sayName != "function") {
Person.prototype.sayName = function () { alert(this.name); };
}
}
//parasitic constructor model
function Person(name, age, job) {
var o = new Object();
o.name = name;
o.age = age;
o.job = job;
o.sayName = function () { alert(this.name); };
return o;
}
//durable object
function Person(name, age, job) {
//create return object
var o = new Object();
//define private variable and method
var xx;
var yy;
//add method
o.sayName = function () { alert(name); };
//return object
return o;
}