【JavaScript】工厂方法

构造函数,用于构造对象。也叫工厂方式【原料、加工、出厂】

空对象,相当于“原料”

给对象加上属性和方法,相当于“加工”

把对象返回出去,相当于“出厂”

//工厂方式【原料、加工、出厂】
function createPerson(name,gender){ //构造函数,用于构造对象
    var obj=new Object();//空对象,相当于“原料”
    //给对象加上属性和方法,相当于“加工”
    obj.name=name;
    obj.gender=gender;
    obj.showName= function () {
        alert("我叫:"+obj.name)
    };
    obj.showGender= function () {
        alert("我是"+obj.gender+"的")
    };
    return obj;//把对象返回出去,相当于“出厂”
}
var person1=createPerson("syr","女");
var person2=createPerson("xixi","男");
person1.showName();
person1.showGender();
person2.showName();
person2.showGender();

这样看起来蛮清晰,但是此时工厂方法有两个缺点

第一,没有new(解决方法:在函数前面加上new)

第二,每个对象都有一套自己的函数,这样浪费了资源 ?



下面是另一种写法,不用new对象和return对象【解决了第一个问题】

 1 function createPerson(name,gender){ //构造函数,用于构造对象
 2 //    var this=new Object(); 系统默认new了一个
 3     this.name=name;         //都换成this
 4     this.gender=gender;
 5     this.showName= function () {
 6         alert("我叫:"+this.name)
 7     };
 8     this.showGender= function () {
 9         alert("我是"+this.gender+"的")
10     };
11 //    return this; 系统默认return了
12 }
13 var person1=new createPerson("syr","女");
14 var person2=new createPerson("xixi","男");
15 person1.showName();
16 person1.showGender();
17 person2.showName();
18 person2.showGender();

解决第二个问题,看下一篇【原型】

时间: 2024-10-05 04:44:52

【JavaScript】工厂方法的相关文章

javascript 之工厂方法模式

1. 简单工厂模式 说明:就是创建一个工厂类,里面实现了所对同一个接口的实现类的创建. 但是好像JavaScript 好像没有 接口 这号东西,所以我们去掉接口这个层; 当然,我们这里的 实现类 下的成员变量,方法应该都是一样的: 例如:这时举短信发送跟邮件发送的例子;1>. 邮件发送[实现]类 function MailSender() { this.to = ''; this.title = ''; this.content = ''; } MailSender.prototype.send

Javascript设计模式理论与实战:工厂方法模式

本文从简单工厂模式的缺点说起,引入工厂方法模式,介绍的工厂方法模式的基本知识,实现要点和应用场景,最后举例进行说明工厂方法模式的应用.在之前的<Javascript设计模式理论与实战:简单工厂模式>这篇文章中,我们介绍了简单工厂的知识和一些应用.简单工厂模式存在一个唯一的工厂类,它的优点是所有产品类的实例化集中管理,便于理解,但这既是优点也是缺点.如果产品类的数量较少并且不会经常发生变化,我们可以直接利用简单工厂模式,但是有的时候,需求是随时在变的,产品类也可能随时在增加,如果使用简单工厂模式

JavaScript中的工厂方法、构造函数与class

JavaScript中的工厂方法.构造函数与class 本文转载自:众成翻译 译者:谢于中 链接:http://www.zcfy.cc/article/1129 原文:https://medium.com/javascript-scene/javascript-factory-functions-vs-constructor-functions-vs-classes-2f22ceddf33e#.wby148xu6 在ES6出现之前,人们常常疑惑JavaScript中的工厂模式和构造函数模式到底有

201508110842_《Javascript权威指南(第六版)——方法借用,私有状态,construct重构和工厂方法》(P225-233)

1. 方法借用,就是“继承”,一个类中的原型方法在另一个类中使用. p227 generic对象 2. 私有状态:“将变量闭包在一个匿名函数内来模拟私有变量” ,这些“变量”只能被类的实例方法访问: 3. construct重构: 4. 工厂方法 5. 子类:“方法链”,“构造函数链”,“组合” 6.

Javascript创建对象方法

1.工厂模式:及时由一个工厂类根据传入的参数决定生产那种产品类 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; } var person = createPerson("xiaoqiang",12,"student&

【译】JavaScript 创建对象: 方法一览与最佳实践

本文是我在众成翻译上认领并翻译的:JavaScript 创建对象: 方法一览与最佳实践 在JavaScript中“创建对象”是一个复杂的话题.这门语言提供了很多种创建对象的方式,不论新手还是老手都可能对此感到无所适从,不知道应该选择哪一种.不过,尽管创建对象的方法很多,看上去语法差异也很大,但实际上它们的相似性可能比你所以为的要多.本文将带领你踏上一段梳理对象创建方法的旅程,为你揭示不同方法之间的依赖与递进关系. 对象字面量 我们的第一站毫无疑问就是创建对象最简单的方法,对象字面量.JavaSc

JS学习十七天----工厂方法模式

工厂方法模式 前言 今天自己看了一下自己写的部分博客,发现写的好丑....开始注意自己的排版!!但是偏亮也不是一朝一夕就完成的,我尽量让它漂亮一点.....每天漂亮一点点 正文 工厂方法模式是一种实现"工厂"概念的面向对象设计模式.实质是定义一个创建对象的接口,但是让实现这个接口的类来决定实例化哪个类.工厂方法让类的实例化推迟到子类中进行. 创建一个对象常常需要复杂的过程,所以不适合在一个复杂的对象中.创建对象可能会导致大量的重复代码,也可能提供不了足够级别的抽象.工厂方法模式通过定义

php设计模式——工厂方法模式(Factory Method)

二十三种设计模式分为三大类: 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. 结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组合模式.享元模式. 行为型模式,共十一种:策略模式.模板方法模式.观察者模式.迭代子模式.责任链模式.命令模式.备忘录模式.状态模式.访问者模式.中介者模式.解释器模式. 1 <?php 2 /* 3 * php设计模式——工厂方法模式(Factory Method) 4 */ 5 6 7 /* 8 * IAp

javascript工厂模式

工厂模式 设计工厂模式的目的是为了创建对象.它通常在类或者类的静态方法实现,具有下列目标: 1.在创建相似对象是执行重复操作 2.在编译时不知道具体类型(类)的情况下,为工厂客户提供一种创建对象的接口. 通过工厂方法(或类)创建的对象在设计上都继承了相同的父对象这个思想,它们都是实现专门功能的特定子类.有时候公共父类是一个包含了工厂方法的同一个类. 代码: //父构造函数 function CarMaker(){}; CarMaker.prototype.drive = function(){