Javascript创建对象 -- 工厂模式

 1 function createPerson(name, age) {
 2     var o = new Object();
 3     o.name = name;
 4     o.age = age;
 5     o.sleep = function() {
 6         alert("sleeping...");
 7     }
 8     return o;
 9 }
10 var p1 = createPerson("cai10", 22);
11 var p2 = createPerson("cai20", 25);
12 alert(p1.name);
13 alert(p1.age);
14 p1.sleep();
15 alert(typeof p1);
16 alert(p1 instanceof Object);
17 alert(p1.constructor);
18 alert(p1.sleep == p2.sleep);
19 // cai10
20 // 22
21 // sleeping...
22 // object
23 // true
24 // function Object() {
25 //    [native code]
26 // }
27 // false

工厂模式, 即以函数来封装以特定接口创建对象的细节.
函数createPerson()可以通过接受参数来创建含有必要信息的Person对象,
可以多次调用此函数, 每次返回一个包含两个属性和一个方法的对象,
但无法知道一个对象的类型, 即通过typeof,constructor等无法确定对象类型.
此外, p1和p2都有一个sleep()方法, 但它们不是同一个Function实例, 创建两个同样的Function实例是没有必要的,
后面的创建对象模式会解决此些问题.

如有错误, 请指正, 谢谢...

时间: 2024-10-08 04:12:31

Javascript创建对象 -- 工厂模式的相关文章

JavaScript高级---工厂模式设计

1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 5 <ti

javascript 简单工厂模式

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 var Bicycle = new Interface("Bicycle",[

JavaScript设计模式——工厂模式

工厂模式:是一种实现“工厂”概念的面上对象设计模式.实质是定义一个创建对象的接口,但是让实现这个接口的类来决定实例化哪个类.工厂方法让类的实例化推迟到子类中进行.创建一个对象常常需要复杂的过程,所以不适合在一个复杂的对象中.创建对象可能会导致大量的重复代码,也可能提供不了足够级别的抽象.工厂方法模式通过定义一个单独的创建对象的方法来解决这些问题,由子类实现这个方法来创建具体类型的对象. 1.简单工厂: //定义接口 var Bicycle = new Interface('Bicycle', [

浅议javascript的工厂模式,构造函数模式及原型模式

通常来讲我们一般这样创建对象: (1)  var jxj=new Object(); jxj.name="jxj"; jxj.sayHi=function(){console.log("O(∩_∩)O哈哈哈~")}: (2)  var   jxj={name:"jxj",age:"24",.....} 这两种方式在一些场景简单,规模小的项目中使用,我们还可以忍受:但这种方式在可拓展性,可维护性等等方面有很多的问题,于是,就出现

javascript设计模式-工厂模式(简单工厂)

接口在工厂模式中起着很重要的作用,如果不对对象进行某种类型检查的以确保其实现了必要的方法,工厂模式的好处也就所剩无几了,举个简单的例子. Interface.js 1 // Constructor. 2 3 var Interface = function(name, methods) { 4 if(arguments.length != 2) { 5 throw new Error("Interface constructor called with " + arguments.le

javascript设计模式-工厂模式

简单工厂模式:使用一个类来生成实例. 复杂工厂模式:使用子类来决定一个成员变量应该是哪个具体的类的实例. 简单工厂模式是由一个方法来决定到底要创建哪个类的实例, 而这些实例经常都拥有相同的接口.通过工厂,可以取得需要的实例.逻辑示意图: 下面列举了一个例子: var Coffee = function(){ this.color="brown"; }; var Milk = function(){ this.color="white"; }; var OrangeJ

Javascript创建对象 -- 构造函数模式

1 function Person(name, age) { 2 this.name = name; 3 this.age = age; 4 this.eat = function() { 5 alert("eating..."); 6 } 7 } 8 var p1 = new Person("cai10", 21); 9 var p2 = new Person("cai20", 27); 10 alert(p1.name); // cai10

Javascript创建对象的方法

<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title></title> <script src="jquery-1.9.1.js"></script> <meta charset="

JavaScript 创建对象之单例、工厂、构造函数模式

01单例模式 首先看一个问题,我们要在程序中描述两个人,这两个人都有姓名和年龄,可能刚刚开始学习js的时候会写成这样: 1 var name1 = 'iceman'; 2 var age1 = 25; 3 4 var name2 = 'mengzhe'; 5 var age2 = 26; 以上的写法的确是描述两个人,每个人都有姓名和年龄,但是每个人的姓名和年龄并没有放在一起,也就是说每个人的年龄和姓名并没有对应起来.这时候我们就引出对象的概念:把描述同一个事物(同一个对象)的属性和方法放在同一个