javascript创建对象的方法--工厂模式(非常好理解)

一、简介

创建对象的方法

本质上都是把"属性"和"方法",封装成一个对象

创建对象的基本模式

  • 普通创建对象的方法,缺陷:

    • 如果创建多个对象会比较繁琐,效率低
    • 实例与原型之间,没有任何办法,可以看出有什么联系。

工厂模式

  • 工厂模式:使用创建并返回特定类型的对象的工厂函数(其实就是普通函数,没啥区别,只是叫法不同)
  • 创建过程类似于工厂生产产品的过程,即:原材料--加工--产品...
  • 解决了多次重复创建多个对象的麻烦。
  • 问题:
    • 创建出的实例之间没有内在的联系,不能反映出它们是同一个原型对象的实例。
    • 创建对象的时候没有使用 new 关键字
    • 会造成资源浪费,因为每生成一个实例,都增加一个重复的内容,多占用一些内存。

二、代码

 <!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="utf-8">
<title>课堂演示</title>
</head>
<body>
<script>
//基本模式
var people1=new Object();
people1.name='孙悟空';
people1.weapon='金箍棒';
people1.run=function(){
return this.name+'的武器是'+this.weapon
}
// alert(people1.name)
//alert(people1.run()) //注意方法的调用需要加()
//该方法如果创建多个对象就会比较繁琐,如下......
var people2=new Object();
people2.name='猪八戒';
people2.weapon='钉耙';
people2.run=function(){
return this.name+'的武器是'+this.weapon
}
//工厂模式
function creatPeople(name,weapon){
var people=new Object() //可以类比为加工对象的原材料
people.name=name;
people.weapon=weapon;
people.run=function(){
return this.name+'的武器是'+this.weapon
} //以上步骤可以类比为加工对象的过程
return people //注意一定要讲创建的对象返回
//可以类比为产品加工完毕出厂的工作
}
var wukong=creatPeople('孙悟空','金箍棒');
var bajian=creatPeople('猪八戒','钉耙');
//alert(wukong.run())
//alert(bajian.run())
//new 关键字
function fun(){
alert(this)
}
fun()
new fun()
</script>
</body>
</html>

1、因为普通创建对象的方法繁琐重复效率低等诸多缺点,所以有了工厂模式

2、工厂模式就是一个简单的工厂,也是一个简单的函数,提供参数,来给你创建对象

3、工厂模式其实就是对普通创建对象进行了一点点的封装,很简单

4、对象的实质是变量,方法的实质是函数,属性的实质也是函数,所以工厂模式的基础就是函数变量之间是可以相互嵌套的

5、工厂模式就是用普通函数嵌套了 创建对象

javascript创建对象的方法--工厂模式(非常好理解)的更多相关文章

  1. javascript创建对象的方法--构造函数模式

    javascript创建对象的方法--构造函数模式 一.总结 构造函数模式作用和不足 1.作用:解决工厂模式不是用new关键字来创建对象的弊端 2.作用:解决工厂模式创建的实例和模型没有内在联系的问题 ...

  2. javascript创建对象的方法--组合模式

    javascript创建对象的方法--组合模式 一.总结 0.作用:解决原型模式对象独有属性创建麻烦的问题 1.组合模式使用普遍:jquery就是用的组合模式,组合模式使用非常普遍 2.组合模式优点: ...

  3. javascript创建对象的方法--原型模式

    javascript创建对象的方法--原型模式 一.总结 1.原型模式解决内存浪费的方法(继承):通过继承,对象继承原型模式下的所有属性,对象不同于其它对象的的属性自己创建或者修改 2.原型的使用(p ...

  4. javascript创建对象的方法--动态原型模式

    javascript创建对象的方法--动态原型模式 一.总结 1.作用:解决组合模式的属性和函数分离问题  2.思路:基本思路和组合模式相同:共用的函数和属性用原型方式,非共用的的函数和属性用构造函数 ...

  5. javascript 面向对象编程(工厂模式、构造函数模式、原型模式)

      javascript 面向对象编程(工厂模式.构造函数模式.原型模式) CreateTime--2018年3月29日17:09:38 Author:Marydon 一.工厂模式 /** * 工厂模 ...

  6. javascript创建对象的方法--基本模式

    javascript创建对象的方法--基本模式 一.总结 关注本质 二.代码 <!DOCTYPE html> <html lang="zh-cn"> < ...

  7. javascript 创建对象的7种模式

    使用字面量方式创建一个 student 对象: var student = function (){ name : "redjoy", age : 21, sex: women, ...

  8. javascript创建对象的方法总结

    Javascript创建对象 最简单的方法:创建object实例. var person=new Object(); person.name="Joey";person.age=2 ...

  9. JavaScript创建对象的方法汇总

    JavaScript中的对象 ECMA-262把对象定义为:“无序属性的集合,其属性可以包含基本值.对象或者函数.”严格来讲,这就相当于说对象是一组没有特性顺序的值.对象的每一个属性或方法都有一个名字 ...

随机推荐

  1. sql server 2000 自动收缩数据库大小

    转载.......http://mars968.blog.163.com/blog/static/7400033200941642356258/ SQLServer2000压缩日志及数据库文件     ...

  2. [Teamcenter 2007 开发实战] 调用web service

    前言 在TC的服务端开发中, 能够使用gsoap 来调用web service. 怎样使用 gsoap  , 參考 gsoap 实现 C/C++ 调用web service 接下来介绍怎样在TC中进行 ...

  3. DF标志和串移动指令(movsb/movsw)

    1.标志寄存器的第10位DF,方向标志位.在串处理指令中,控制每次操作后si,di的增减 DF=0,每次操作后,si.di添加 DF=1,每次操作后,si.di减小 我们能够用汇编语法描写叙述movs ...

  4. Array 对象常用的方法总结

    shift:删除原数组的第一项,返回删除元素的值:如果数组为空则返回undefined var arr = [1, 2, 3, 4, 5]; var out = arr.shift(); consol ...

  5. Python(十) 函数式编程: 匿名函数、高阶函数、装饰器

    一.lambda表达式 lambda parameter_list: expression # 匿名函数 def add(x,y): return x+y print(add(1,2)) f = la ...

  6. Python(六) Python 函数

    一.认识函数 help(方法名字)  help(round) 1.功能性 2.隐藏细节 3.避免编写重复的代码 4.组织代码 自定义函数 二.函数的定义及运行特点 # 递归 def sum_num(n ...

  7. Python正则表达式初识(八)

    继续分享Python正则表达式的基础知识,今天给大家分享的特殊字符是“\w”和“\W”,具体的教程如下. 1.“\w”代表的意思是该字符为任意字符,但是和特殊字符“.”的意思不同.“\w”代表的字符主 ...

  8. 51nod 01背包

    #include<cstdio> #include<algorithm> #define REP(i, a, b) for(int i = (a); i < (b); i ...

  9. 今日SGU 5.20

    SGU 404 题意:.. 收获:取模 #include<bits/stdc++.h> #define de(x) cout<<#x<<"="& ...

  10. 今日SGU 5.13

    SGU 146 题意:就是给你一个长度为l的圈,然后你跑步,每一段给你时间t和速度v,问你最后离起点多远 收获:就是把浮点数转为整数,然后但是会出现精度误差,比如l最多四位小数,那你就加0.00001 ...