读心悦

  • 读心随笔
  • 读心里话
  • 计算机
  1. 首页
  2. Javascript
  3. 正文

原型模式(Prototype)和单例模式(Singleton)

2021年01月06日 41点热度 0人点赞 0条评论

原型模式

就是用原型实例指向创建对象的类,主要用于新的对象的类共享原型对象的属性以及方法。

简单实例:

/**
 * 图片轮播类
 */

var LoopImages = function(imgArr,container){
    this.imagesArray = imgArr;
    this.container = container;
}

LoopImages.prototype = {
    //创建轮播图
    createImage:function(){},

    //切换图片
    changeImage:function(){}
}

//上下切换类
var SlideLoopImg = function(imgArr,container){
    //构造函数继承图片轮播类
    LoopImages.call(this,imgArr,container);
}

SlideLoopImg.prototype = new LoopImages();
SlideLoopImg.prototype.changeImage = function(){

}

//渐隐切换

var FadeLoopImg = function(imgArr,container,arrow){
    LoopImages.call(this,imgArr,container);
    this.arrow = arrow;
}
FadeLoopImg.prototype = new LoopImages();
FadeLoopImg.prototype.changeImage = function(){

}

原型模式的特点是任何时候都可以对基类或者子类进行方法的拓展,并且所有被实例化的对象或者类都能获取这些方法。

原型模式主要用于对象创建上。

原型模式的对象复制方法(浅复制)

/**
 * 原型对象的复制方法
 * 基于已存在的模板对象克隆出新的对象模式
 * @param arguments[0]   模板对象
 * 
 * 对模板引用类型的属性本质上是浅复制(引用类型属性共享)
 */

function prototypeExtend(){
    var F = function(){};
    var args = arguments; //模板对象参数序列
    var i = 0;
    var len = args.length;

    for(;i<len;i++){
        //遍历每个模板中的属性
        for(var j in args[i]){
            //把属性复制到缓存类中
            F.prototype[j] = args[i][j];
        }
    }
    return new F();
}

原型模式可以让多个对象共享同一个原型对象的属性和方法,也可以说是一种继承方式,但是它不要创建,而是把原型对象分享给继承的对象。

当需要每个继承对象独立拥有一份原型对象时,则需要对原型对象进行复制

单例模式

(单体模式)只是允许实例化一次的对象类。定义一个命名空间和管理代码库的各个模块

/**
 * 单例模式
 */

 var Dom = {
     Util:{
         util_method1:function(){},
         Util_method2:function(){}
     },
     Tool:{
         tool_method1:function(){},
         tool_method2:function(){}
     },
     Ajax:{
         get:function(){},
         post:function(){}
     }
 }

 /**
  * 单例模式,管理静态变量
  */

  var config = (function(){
      var conf = {
          MAX_NUM:1000,
          MIN_NUM: 1,
          COUNT:1500
      };
      return {
          get:function(name){
              return conf[name] ? conf[name] : null;
          }
      }
  })();

  var c = config.get("MIN_NUM");
  console.log(c)
赞微海报分享
本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: JavaScript
最后更新:2021年01月06日

读心悦

自己从事开发也有一段时间了,总有一些迷茫,对未来有一点恐惧,不知道以后会不会继续从事开发的岗位。无论未来做出怎样的选择,这个网站就记录一下从事开发这段时间的一些笔记、阅读笔记吧,好歹也给自己留个纪念吧,你说呢! 写点代码,读点书,读点心,读点自己!

打赏 点赞
< 上一篇
下一篇 >

文章评论

取消回复

读心悦

自己从事开发也有一段时间了,总有一些迷茫,对未来有一点恐惧,不知道以后会不会继续从事开发的岗位。无论未来做出怎样的选择,这个网站就记录一下从事开发这段时间的一些笔记、阅读笔记吧,好歹也给自己留个纪念吧,你说呢! 写点代码,读点书,读点心,读点自己!

标签聚合
JavaScript redux 阅读 flutter 闲谈 mysql 小程序 git react node CSS hook Echarts taro 随笔 canvas Nginx 悦读 vue
推荐文章
  1. JavaScript设计模式-技巧型设计模式简介
  2. JavaScript设计模式-行为设计模式
  3. JavaScript设计模式-结构型设计模式
  4. JavaScript设计模式-架构型设计模式
分类
  • flutter (11)
  • html/css (23)
  • Javascript (23)
  • Mysql (2)
  • node (2)
  • React (27)
  • vue (1)
  • 小程序 (41)
  • 悦读 (8)
  • 未分类 (2)
  • 读心里话 (10)

COPYRIGHT © 2020 读心悦

黔ICP备20005501号

黔公网安备52011502001078号