javascript创建对象的方法--工厂模式(非常好理解)
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创建对象的方法--工厂模式(非常好理解)的更多相关文章
- javascript创建对象的方法--构造函数模式
javascript创建对象的方法--构造函数模式 一.总结 构造函数模式作用和不足 1.作用:解决工厂模式不是用new关键字来创建对象的弊端 2.作用:解决工厂模式创建的实例和模型没有内在联系的问题 ...
- javascript创建对象的方法--组合模式
javascript创建对象的方法--组合模式 一.总结 0.作用:解决原型模式对象独有属性创建麻烦的问题 1.组合模式使用普遍:jquery就是用的组合模式,组合模式使用非常普遍 2.组合模式优点: ...
- javascript创建对象的方法--原型模式
javascript创建对象的方法--原型模式 一.总结 1.原型模式解决内存浪费的方法(继承):通过继承,对象继承原型模式下的所有属性,对象不同于其它对象的的属性自己创建或者修改 2.原型的使用(p ...
- javascript创建对象的方法--动态原型模式
javascript创建对象的方法--动态原型模式 一.总结 1.作用:解决组合模式的属性和函数分离问题 2.思路:基本思路和组合模式相同:共用的函数和属性用原型方式,非共用的的函数和属性用构造函数 ...
- javascript 面向对象编程(工厂模式、构造函数模式、原型模式)
javascript 面向对象编程(工厂模式.构造函数模式.原型模式) CreateTime--2018年3月29日17:09:38 Author:Marydon 一.工厂模式 /** * 工厂模 ...
- javascript创建对象的方法--基本模式
javascript创建对象的方法--基本模式 一.总结 关注本质 二.代码 <!DOCTYPE html> <html lang="zh-cn"> < ...
- javascript 创建对象的7种模式
使用字面量方式创建一个 student 对象: var student = function (){ name : "redjoy", age : 21, sex: women, ...
- javascript创建对象的方法总结
Javascript创建对象 最简单的方法:创建object实例. var person=new Object(); person.name="Joey";person.age=2 ...
- JavaScript创建对象的方法汇总
JavaScript中的对象 ECMA-262把对象定义为:“无序属性的集合,其属性可以包含基本值.对象或者函数.”严格来讲,这就相当于说对象是一组没有特性顺序的值.对象的每一个属性或方法都有一个名字 ...
随机推荐
- Java基础学习总结(13)——流IO
一.JAVA流式输入/输出原理 流是用来读写数据的,java有一个类叫File,它封装的是文件的文件名,只是内存里面的一个对象,真正的文件是在硬盘上的一块空间,在这个文件里面存放着各种各样的数据,我们 ...
- 洛谷 P1443 马的遍历
P1443 马的遍历 题目描述 有一个n*m的棋盘(1<n,m<=400),在某个点上有一个马,要求你计算出马到达棋盘上任意一个点最少要走几步 输入输出格式 输入格式: 一行四个数据,棋盘 ...
- xml方式封装通信数据方法
xml方式封装通信数据方法 public static function xmlToEncode($data) { $xml = ""; foreach($data as $key ...
- Redis封装值ZSet
/// <summary> /// Sorted Sets是将 Set 中的元素增加了一个权重参数 score,使得集合中的元素能够按 score 进行有序排列 /// 1.带有权重的元素 ...
- POJ 3257 DP
题意: 思路: 用vector存上本出发点能到的地方&成本&有趣指数(用结构体保存) 然后DP就好了 f[i][j]表示到了i 成本为j的有趣指数最大是多少 f[vec[i][k].e ...
- 记录一下 mysql 的查询中like字段的用法
SELECT * from t_yymp_auth_role where role_name not like '%测试%' and role_name not like '%部门%' and rol ...
- Convolution & Pooling exercise
convolution First, we want to compute σ(Wx(r,c) + b) for all valid (r,c) (valid meaning that the ent ...
- Linux下CD/DVD刻录软件
1.Brasero是一款CD/DVD刻录软件,Gnome桌面环境默认自带,支持单次写入数据DVD和任何类型的CD,并且能够将光盘镜像写入到硬盘,其图形化的操作界面使用户能够轻松而快速的在Linux下烧 ...
- Windows10 Linux子系统的启用和中文用户名的修改
一直用的虚拟机Linux,忽然心血来潮,看到Windows 10可以使用Linux子系统,于是来装一波,按照这位前辈的教程 https://blog.csdn.net/zhangdongren/art ...
- [codewars_python]Sum of Digits / Digital Root
Instructions In this kata, you must create a digital root function. A digital root is the recursive ...