(一)工厂模式
为了解决实例化对象产生大量重复的问题。其代码格式如下:
function createObject(name, age) { //集中实例化的函数
var obj = new Object();
obj.name = name;
obj.age = age;
obj.run = function () {
return this.name + this.age ;
};
return obj;
}
var box1 = createObject(‘ji‘, 10); //第一个实例
var box2 = createObject(‘Jack‘, 20); //第二个实例
alert(box1.run());
alert(box2.run()); //保持独立
工厂模式解决了重复实例化的问题, 但还有一个问题, 那就是识别问题, 因为根本无法搞清楚他们到底是哪个对象的实例。
alert(typeof box1); //Object
alert(box1 instanceof Object); //true
(二)构造函数(构造方法)
可用来创建特定的对象。类型于 Object 对象。其代码格式如下:
function Box(name, age) { //构造函数模式
this.name = name;
this.age = age;
this.run = function () {
return this.name + this.age ;
};
}
var box1 = new Box(‘ji‘, 10); //new Box()即可
var box2 = new Box(‘Jack‘, 20);
alert(box1.run());
alert(box1 instanceof Box); //很清晰的识别他从属于 Box
使用构造函数的方法, 即解决了重复实例化的问题, 又解决了对象识别的问题,和使用工厂模式的方法他们不同之处如下:
1.构造函数方法没有显示的创建对象(new Object());
2.直接将属性和方法赋值给 this 对象;
3.没有 renturn 语句。
构造函数的方法有一些规范:
1.函数名和实例化构造名相同且大写,(PS:非强制,但这么写有助于区分构造函数和普通函数);
2.通过构造函数创建对象,必须使用 new 运算符。
原文:http://www.cnblogs.com/jizhongjing/p/4851689.html