Javascript设计模式学习之Decorator(装饰者)模式

抽象decorator模式

使用jQuery的装饰者模式

jQuery.extend()允许我们在运行时或者在随后一个点上动态地将两个或两个以上的对象(和它们的属性)一起扩展(或合并)为一个单一对象。

定义三个对象: defaults、options、settings,目的是为了装饰defaults对象,将options的额外功能附加到defaults上。

var decoratorApp = decoratorApp || {};
//定义要使用的对象
decoratorApp = {
   defaults: {
      validate: false,
      limit: 5,
      name: "foo",
      welcome: function(){
          console.log("welcome!");
      }
   },

   options:{
       validate: true,
       name: "bar",
       helloWorld: function(){
           console.log("hello,world");
       }
   },

   settings: {},

   printObj: function(obj){
       var arr = [],
           next;
       $.each(obj,function(key,val){
           next = key + ":";
           next += $.isPlainObject(val) ? printObj(val) : val;
           arr.push(next);
       });
       
       return "{" + arr.join(",") + "}";
   }
};

decoratorApp.settings = $.extend({},decoratorApp.defaults,decoratorApp.options);
//打印
decoratorApp.printObj(decoratorApp.settings);
    原文作者:设计模式
    原文地址: https://segmentfault.com/a/1190000004592412
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞