javascript消除字符串兩邊空格的兩種方式,面向對象和函數式編程
主要是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和弄全局變量。
此篇僅從js和py中的函數/方法調用形式,來淺顯說明oop的優點。
javascript消除字符串兩邊空格的兩種方式,面向對象和函數式編程