javascript消除字符串两边空格的两种方式,面向对象和函数式编程。python oop在调用时候的优点
2018-01-09 15:02
741 查看
主要是javascript中消除字符串空格,比较两种方式的不同
面向对象把某些方法几种赋予给某一类的对象,无论在调用还是编辑器自动补全的时候优点太多了。
在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的优点。
//面向对象,消除字符串两边空格 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的优点。
相关文章推荐
- JavaScript面向对象方式实现栈结构的字符串逆序
- python中的oop面向对象基本编程(类、实例、魔术)
- python有面向过程、面向对象、函数式编程,面向切面编程、泛型编程多种编程范式
- Python对象方法两种调用方式
- Python笔记(2):多参数,全局变量与局部变量,层状作用域,函数式编程,面向对象
- Javascript高级程序设计第二版第六章--面向对象程序设计(Object-Oriented Programming)简称OOP编程--笔记
- 面向面试编程——javascript对象的几种创建方式
- 廖雪峰Python教程1轮还没学明白的(3) -- 面向对象高级编程 -- 定制类 -- __getattr__之链式调用
- 9ec4 【javascript】Javascript中调用对象内函数的两种方式.
- javascript面向对象方式,调用属性和方法
- Javascript高级程序设计第二版第六章--面向对象程序设计(Object-Oriented Programming)简称OOP编程--笔记
- cxf客户端传字符串及自定义对象参数两种调用方式
- < 笔记 > Python - 08 Python 面向对象高级编程(OOP Advanced Features)
- 创建字符串对象的时候,使用字面值和使用new String()构造器这两种方式有什么不同?
- javascript面向对象精华编程
- JavaScript去除字符串两边空格trim
- JavaScript实现二级、多级(N级)联动下拉列表框更新版,支持IE6,FireFox,函数和类两种调用方式,支持到N级,非常通用。
- JavaScript实现二级、多级(N级)联动下拉列表框更新版,支持IE6,FireFox,函数和类两种调用方式,支持到N级,非常通用。
- python 调用webservice两种方式
- javascript面向对象精华编程(转)