常用的初始化实例对象的模式

1. 工厂模式

function makeObj(name, age, job) {

var o = new Object();

o.name = name;

o.age = age;

o.job = job;

o.sayAge = function() {

alert(this.age);

};

return o;

}

var a = makeObj("wst", "22", "web")

优点: 能快速的构建大量实例。

缺点: 不能解决对象识别的问题。

2. 构造函数模式

function Person(name, age, job) {

this.name = name;

this.age = age;

this.job = job;

this.sayAge = function() {

alert(this.age);

};

}

var a = new Preson("wst", "22", "web")

优点: 能快速构建大量, 可以将其实例标识为一种特定类型

缺点: 每个方法都要在每个实例上重新创建一遍

3. 原型模式

function Person() {

}

Person.prototype.name = 'wst';

Person.prototype.age = '22';

Person.prototype.job = 'web';

Person.prototype.sayAge = function() {

alert(this.age);

};

var a = new Preson("wst", "22", "web")

简写

function Person() {}

Person.prototype = {

constructer: Person,

name: "wst",

age: '22',

job: 'web'

};

优点:避免了相同方法的重复构建

缺点:因为其共享的本质,影响到实例拥有自己的全部属性

4.混合模式

function Person(name,age,job){

this.name = name;

this.age = age;

this.job = job;

this.frisds = ['zkw','lyf'];

}

Person.prototype = {

constructor:Person,

sayName:function (){

alert(this.name);

}

};

var a = new Preson("wst", "22", "web")

使用最广泛,认同度最高,定义引用类型的一种默认模式

你可能感兴趣的:(常用的初始化实例对象的模式)