• 初了解JS设计模式,学习笔记


    什么是设计模式。
      回答这个问题,往往我们得先知道我们为什么需要设计模式,正是因为有需求才会有设计模式,难道不是吗?

    我们为什么需要设计模式。
      如果没有按照设计模式去写,你的代码很可能是乱无肆忌写的,也就是随心所欲,想怎么写就怎么写,反正只要出效果就行,好像是没啥问题,但好像又有问题,因为你根本就不知道这段代码在将来会发生什么问题,因此这段代码是不可预测的,另外一点你的代码废话可能会多一些,等等,如果用设计模式来写,往往可以解决这些问题。

    那么究竟什么是设计模式。
      其实在‘我们为什么需要设计模式’这段话中已经提到了几点,如果从教学层面来说什么是设计模式的话,可以理解为设计模式就是一种经验,就是前人已经尝试过某些写法,他们知道怎么去写会好一些,怎么去写可能会出错。因此我们只需要按照他们的方式去写代码,就可以解决我们程序中的一些问题。

    什么是多态。
      我们知道面向对象其中有一项就是多态,但网上很少有去讲JS多态的问题,主要原因就是JS天生就是多态的。
      如下: 

      var a = 10; 

          a = 'hello world';

      JS可以随意更改变量类型,主要原因就是JS是动态脚本语言,决定变量类型是在运行这段代码时决定的,而不像传统语言在编译的时候就决定了。
      

      再看下面一段代码:  

      function fn(name){
        alert(name);
         }
      fn('zhuimengzi');
      fn('追梦子');  


      根据传入的参数可以打印不同的值。
      多态指的就是同一操作,作用在不同对象上可以产生不同的结果。也想象成动态的,多态多态,不就是指多种形态。
      再如:

      

    function Hello(why){
      why.sayHello();
    }

    var a = {sayHello:function(){alert('我是A')}};
    var b = {sayHello:function(){alert('我是B')}};

    Hello(a);
    Hello(b);

      好像这没啥用吧?如果粗略的看好像是没啥,但细看,却是一种思想,我们来看

      

    function Hello(why){
      why.sayHello();
    }

    var a = {sayHello:function(){alert('我是A')}};
    var b = {sayHello:function(){alert('我是B')}};

    Hello(a);
    Hello(b);

      这段代码其实是有分工的,Hello这个函数它只做一件事就是让一个对象执行一个方法。并不在乎是哪个对象。多态的核心思想就是做什么,和谁去做是分开来的,再看“同一操作,作用在不同对象上可以产生不同的结果。”这句话,这里强调了同一操作,也就是操作同一个东西它可以产生多面性。也就是说Hello里面的代码必须有复用性。你不能说我传另外一个对象,你就不能用了。

    鸭子类型。
      鸭子类型即,我不至于你是什么,比如我们经常看电影听到的,我不在乎你长得漂不漂亮,只要是个女的就行,等等这类。再如:我不管你怎么写,你给我提供一个接口就行。对应代码:

    var json = {fn:function(){}};
    if(json.fn&&(typeof json.fn)==='function'){
      alert('ok');
    }


    只要有json.fn这个方法就行,我不管你怎么写的,和我没关系。

    转自:http://www.cnblogs.com/pssp/p/5784721.html

  • 相关阅读:
    嵌入式开发之zynq——zynq开发环境搭建
    嵌入式开发之zynq——赛灵思的一款两a9加一fpga芯片的开发板
    数据结构和算法的选择
    找工作看准网
    健康情感之招聘---图像算法工程师
    grafana 邮件报警
    ELK logstash邮件报警
    grafana + influxdb + telegraf
    centos 6.5 上安装使用upsource
    ELK 中的elasticsearch 集群的部署
  • 原文地址:https://www.cnblogs.com/smallroc/p/6592927.html
Copyright © 2020-2023  润新知