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的優點。
?
總結
以上是生活随笔為你收集整理的javascript消除字符串两边空格的两种方式,面向对象和函数式编程。python oop在调用时候的优点...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 做梦梦到自己拔牙是什么意思
- 下一篇: Python之集合、解析式,生成器,函数