zoukankan      html  css  js  c++  java
  • 设计模式之封装,学习笔记

      封装即把代码隐藏起来,why?好好的为什么要隐藏起来,这里指的隐藏并非真的隐藏,而是把一些复杂的代码给包裹起来,留下的是一个接口,到时候要用的时候直接调用这个接口即可,这样那些不是干技术的也可以轻松上手了。有时我们还会把一些私有属性属性给封装起来,如下:

    function fn(){
      var _name = 'javascript';
      return {getName:function(){
        return _name;
      }};
    }
    fn().getName(); //javascript

    var f = (function(){
      var _name = 'javascript';
      return function(){
        return _name;
    };
    }());

    var f = null;
    (function(){
      var _name = 'javascript';
      f = _name;
    }())
    alert(f); //javascript

      这样外部就无法修改里面的_name值了,如果想让外部修改可以这样。


    var f = (function(){
      var _name = 'javascript';
      return {
        getName:function(){
          return _name;
        },
        setName:function(name){
          _name = name;
        }
      };
    }());

    f.getName(); //javascript
    f.setName('CSS3');
    f.getName(); //CSS3

      封装还有一点就是把将来可能会发生变化的给封装起来,另外就是它不在乎里面的代码是怎么实现的,它只关心你留给他的接口是否有发生变化。如下就是一个封装变化点。

    function getByClass(className){
      var tags = document.getElementsByTagName('*');
      var arr = [];
      var t = null;
      for(var i=0,len=tags.length;i<len;i++){
        t = tags[i].className.split(' ');
        for(var k=0;k<t.length;k++){
          if(t[k]===className){
            arr.push(tags[i]);
            break;
          }
        }
      }
      return arr;
    }
    getByClass('className');

      这段代码的意思是通过class来获取元素,大家知道IE低版本浏览器不兼容document.getElementsByClassName。所以我们进行了封装,使用的话就只需要通过getByClass来获取,假如有一天浏览器都兼容document.getElementsByClassName这个方法的话可以这样。

    function getByClass(className){
      return document.getElementsByClassName(className);
    }
    getByClass('li');


    使用方法和上面还是一样的,这就是封装变化点,不改变接口,只改变内部细节。

  • 相关阅读:
    Zookeeper(1)---初识
    golang的一些零散笔记
    ELK使用过程中遇到的一些问题
    ECharts系列:玩转ECharts之常用图(折线、柱状、饼状、散点、关系、树)
    MySQL系列:Docker安装 MySQL提示错误:Access denied for user'root'@'localhost' (using password:yes)
    HTML+CSS系列:登录界面实现
    Apollo系列(二):ASP.NET Core 3.1使用分布式配置中心Apollo
    Apollo系列(一):分布式配置中心Apollo安装(Linux、Docker)
    为你的应用加上skywalking(链路监控)
    工作中,你是如何开始搭建一套容器云环境的呢?
  • 原文地址:https://www.cnblogs.com/pssp/p/5785241.html
Copyright © 2011-2022 走看看