zoukankan      html  css  js  c++  java
  • javascript消除字符串两边空格的两种方式,面向对象和函数式编程。python oop在调用时候的优点

    主要是javascript中消除字符串空格,比较两种方式的不同

    //面向对象,消除字符串两边空格
    String.prototype.trim = function()
    {
    return this.replace(/(^s*)|(s*$)/g, "");
    };
    
    //去左右空格的函数;
    function trim(s){
      return s.replace(/(^s*)|(s*$)/g, "");
    }
    调用消除空格的两种方式。
    var defualtPhone = defualtDeliveryArray[0].getElementsByTagName("td")[4].textContent.trim();
    
    
    var defualtPhone = trim(defualtDeliveryArray[0].getElementsByTagName("td")[4].textContent);
    就是'  abcd  '.tirm()和trim('  abcd   ')的区别。
    由于现在编程的都是智能编辑器,在使用面向对象的时候方法作为对象的一个属性,在对象的命名空间下,很容易自动补全弹出来。

    面向对象把某些方法几种赋予给某一类的对象,无论在调用还是编辑器自动补全的时候优点太多了。

    在python中,函数式编程和oop编程调用的区别是,假如有两种类型

    对object1类型的东西,需要传给两个函数处理。;

    def fun1a(object1,*args,**kwargs):

          pass

    def fun1b(object1,*args,**kwargs):

           pass

    对object2类型的东西,需要传给两个函数处理。;

    def fun2a(object2,*args,**kwargs):

          pass

    def fun2b(object2,*args,**kwargs):

           pass

    调用的时候,使用 fun1a(object1,*args,**kwargs)  fun1b(object1,*args,**kwargs)   , fun2a(object2,*args,**kwargs)  fun2b(object2,*args,**kwargs)   

    传函数的时候一定不要传错了,不能把object2类型的传给fun1a 和fun1b这两个函数处理,会出错。

    面向对象的时候,调用方式是:

    a = A(*args,**kwargs)

    a.fun1()

    a.fun2()

    b = B(*args,**kwargs)

    b.fun3()

    b.fun4()

    b.fun5()

    从调用来看,方法越多,面向对象实例化后可以少传一些参数的次数。面向过程时候,如果fun4需要利用fun3的处理结果,还需要在fun3中各种return,同理还有fun6 fun7什么的,各种return不太好。为了保持多个函数处理同一个变量,还不得不使用一些global全局变量。

    当使用面向对象时候,由于编辑器有智能补全功能,肯定不会出现b.fun1()这种乱调用的低级错误了,在获取结果的时候,可以使用object2.xxx的方式获得,不用到处去return和弄全局变量。

    python里面的内置类型的方法,如果都改成由函数来处理,每个类型几十种方法,那我们需要记住几百种常见函数,记住什么函数能处理什么类型的对象,脑袋简直要爆炸了。但是调用方法就简单了,对象后面打个.号,就能自动显示出对象有哪些属性,有哪些方法,这些不用记得很清楚就行。python中只有一些很少的函数是各种对象通用的,比如字符串长度 列表长度 集合长度,统一传给len()函数就能得出结果了,也可以使用str1.__len__()和list1.__len()__这种方式得出长度结果。

    oop的优点不仅是从代码组织上,更体现在调用上。那么多第三方库在调用时候能用的那么爽,那是三方库中用了大量oop,如果人家全用函数,在调用时候,体验会大幅下降不爽。

    此篇仅从js和py中的函数/方法调用形式,来浅显说明oop的优点。

  • 相关阅读:
    poj 1789 每个字符串不同的字母数代表两个结点间的权值 (MST)
    poj 1251 poj 1258 hdu 1863 poj 1287 poj 2421 hdu 1233 最小生成树模板题
    poj 1631 最多能有多少条不交叉的线 最大非降子序列 (LIS)
    hdu 5256 最少修改多少个数 能使原数列严格递增 (LIS)
    hdu 1025 上面n个点与下面n个点对应连线 求最多能连有多少条不相交的线 (LIS)
    Gym 100512F Funny Game (博弈+数论)
    UVa 12714 Two Points Revisited (水题,计算几何)
    UVa 12717 Fiasco (BFS模拟)
    UVa 12718 Dromicpalin Substrings (暴力)
    UVa 12716 && UVaLive 6657 GCD XOR (数论)
  • 原文地址:https://www.cnblogs.com/ydf0509/p/8251478.html
Copyright © 2011-2022 走看看