待整理笔记(表单序列化操作多态函数对象的状态队列管理模式)

Posted 君寻不惑

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了待整理笔记(表单序列化操作多态函数对象的状态队列管理模式)相关的知识,希望对你有一定的参考价值。

1.jquery的表单序列化操作

  $(‘.form‘).serializeArray();通过serializeArray()方法得到表单form(class=“form”)的dom结点下所有含有name值的节点的value值的一个数组;

  这个数组由多个对象构成,每个对象有name和value两个key值.

2.编程的多态性思想

  利用函数的参数数组arguments,通过判断数组的长度来选择性执行某个功能;

例如:

store: function(namespace, data, remove){

  //存储内容
  //namespace: 命名空间
  //data: 存储的数据对象
  //利用多态去处理
  if(arguments.length > 2) {
    localStorage.removeItem(namespace);
  }else if(arguments.length > 1){
    localStorage.setItem(namespace, JSON.stringify(data));
  }else {
    var strobj = localStorage.getItem(namespace);
    return (strobj && JSON.parse(strobj)) || {};
  }
}

如上函数所示,当参数数组长度大于2时,执行remove操作

       当参数数组长度大于1时,执行存储操作

       当参数数组长度为1时,执行存储操作;

3.状态队列管理的编程模式;(对象)

  例如有五个对象,由他们的对象名构成数组  var targetList = [‘首页‘, ‘排名页‘, ‘表单页‘, ‘城市列表页‘]。我们可以直观地通过 targetMap  数组了解到该项目的对象结构和执行顺序(按照数组的索引值排序); 

  然后由  var  targetMap = {

            ‘首页’:homeModule,

            ‘排名页‘: rankModule,

            ‘表单页‘: formModule,

            ‘城市列表页‘: citylistModule

          }

  的对象表来进行定位到执行对象;

  现在来实现各个模块的跳转,感受一下在这种模式下代码是如何优雅的。

  targetList.current = null;

  targetList.index = -1;

  targetList.next = function() {

    targetList.index++;

    targetList.current  &&  targeList.current.leave  &&  targetList.current.leave();//第一步执行当前操作模块的leave方法

    var key  = targetList[targetList.index];//第二步找到即将进入的模块,并执行它的enter()方法

    var module = targetMap[key];

    module  &&  module.enter();

    targetList.current = module;  //最后让  当前操作模块 = 即将进入的模块赋值;

  }

  targetMap[targetList[targetList.length - 1]].leave = function() {};//重载状态序列末位的对象的leave方法;

  targetList.next();//显示第一个模块;

  这样在对象的绑定事件例如点击事件发生时,调用next()方法,每个对象不需要知道下一个转到哪里,跳转目标由targetlist和targetMap管理.

  优雅地实现跳转的目标;

以上是关于待整理笔记(表单序列化操作多态函数对象的状态队列管理模式)的主要内容,如果未能解决你的问题,请参考以下文章

笔记待整理

python面对对象笔记整理

数据结构学习笔记(栈队列)整理与总结

数据结构学习笔记(栈队列)整理与总结

JS 设计模式 (待整理)

反射,面向对象(封装,继承,多态)知识整理