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

一、总结

0、作用:解决原型模式对象独有属性创建麻烦的问题

1、组合模式使用普遍:jquery就是用的组合模式,组合模式使用非常普遍

2、组合模式优点:a、支持传参  b、 解决内存浪费(共用的函数和属性用原型方式,非共用的的函数和属性用构造函数的方式)

3、组合模式的实现:共用的函数和属性用原型方式,非共用的的函数和属性用构造函数的方式

二、javascript创建对象的方法--组合模式

构造函数和原型组合模式

这是目前最为常用的创建对象的方式。

这种概念非常简单,即用构造函数定义对象的所有非函数属性,用原型方式定义对象的函数属性(方法)。结果是,所有函数都只创建一次,而每个对象都具有自己的对象属性实例。

此外,组合模式还支持向构造函数传递参数,可谓是集两家之所长。

在所接触的JS库中,jQuery类型的封装就是使用组合模式来实例的!!!

三、代码

 <!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="utf-8">
<title>课堂演示</title>
</head>
<body>
<script>
function Monster(){}
Monster.prototype={
constructor: Monster,
name:'喽啰',
job:['巡山','打更'],
run:function() {return this.name+'的工作是'+this.job }
}
//构造函数和原型组合模式
function Monster(name,arr){//非共用
constructor: Monster,
this.name=name
this.job=arr
}
Monster.prototype={//共用
run:function() {return this.name+'的工作是'+this.job }
}
var monsterI=new Monster('小旋风',['巡山','打更','砍柴'])
var monsterII=new Monster('小钻风',['巡山','打更','挑水'])
alert(monsterI.run())
alert(monsterII.run())
</script>
</body>
</html>

1、组合模式的实现:共用的函数和属性用原型方式,非共用的的函数和属性用构造函数的方式

2、this关键字:因为传参,所以this关键字

3、原型中可以调用对象的非共用属性:原型中可以调用对象的非共用属性,用this关键字

4、函数的定义和使用还是和之前一样

5、原型方式:对象名.prototype={}

6、构造器方式:constructor: Monster,

7、对比:注意组合模式和原型模式的对比

javascript创建对象的方法--组合模式的更多相关文章

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

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

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

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

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

    javascript创建对象的方法--工厂模式(非常好理解) 一.简介 创建对象的方法 本质上都是把"属性"和"方法",封装成一个对象 创建对象的基本模式 普通 ...

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

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

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

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

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

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

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

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

  8. web前端教程之javascript创建对象的方法

    今天给大家讲讲javascript基础教程中的javascript面向对象的技术,这一次我们深入的学习一下JavaScrip基于t面向对象之创建对象,关于面向对象的一些术语这里就不给大家介绍了,不了解 ...

  9. JavaScript创建对象的方法

    显示在浏览器中的控制台中. <script type="text/javascript"> //这个工厂方法返回一个新的"范围对象" functio ...

随机推荐

  1. Qt编译OpenGL程序遇到的问题

    软件版本号: Qt 4.8.5 依照网上的例程(http://www.qiliang.net/old/nehe_qt/lesson01.html),跑了一下基于Qt Creator的OpenGL.因为 ...

  2. POJ - 3984 - 迷宫问题 (DFS)

    迷宫问题 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10936   Accepted: 6531 Description ...

  3. 《TCP/IP具体解释》读书笔记(19章)-TCP的交互数据流

    在TCP进行传输数据时.能够分为成块数据流和交互数据流两种.假设按字节计算.成块数据与交互数据的比例约为90%和10%,TCP须要同一时候处理这两类数据,且处理的算法不同. 书籍本章中以Rlogin应 ...

  4. SpringMVC 常见异常处理

    1.javax.xml.bind.UnmarshalException: unexpected element (uri:"", local:"request" ...

  5. Mybatis传多个参数(推荐)

    Dao层的函数方法 int deleteMsgById(@Param("name") String name,@Param("id") String id); ...

  6. BZOJ 4144 Dijkstra+Kruskal+倍增LCA

    思路: 先把所有的加油站 push进按weight排序的优先队列里 对于每个不是加油站的点 找到到它的点的最短路以及它来源的加油站 如果x和y有边 且x和y加油站的来源不一样 则它可以连边 跑一边Kr ...

  7. java实现折半查找

    package althorgrim;/** * 1.必须采用顺序存储结果 * 2.关键字必须有序 * @author hanrk-2734 * */public class TestBinarySe ...

  8. 【python 设计模式】单例模式

    单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在.当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场. 比如,某 ...

  9. SSH框架的多表查询(方法二)

     必须声明本文章==>http://www.cnblogs.com/zhu520/p/7773133.html  一:在前一个方法(http://www.cnblogs.com/zhu520/p ...

  10. POJ 1466 Girls and Boys (匈牙利算法 最大独立集)

    Girls and Boys Time Limit: 5000MS   Memory Limit: 10000K Total Submissions: 10912   Accepted: 4887 D ...