原型模式
就是用原型实例指向创建对象的类,主要用于新的对象的类共享原型对象的属性以及方法。
简单实例:
/** * 图片轮播类 */ 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)
文章评论