巧妙理解apply 的用法

2021-09-17 20:43:19 字數 756 閱讀 5044

關於物件的繼承,一般的做法是用複製法: object.extend 

見protpotype.js 的實現方法:

我們先從 math.max() 函式說起,  math.max後面可以接任意個引數,最後返回所有引數中的最大值。

比如  

alert(math.max(5,8))   //8

alert(math.max(5,7,9,3,1,6))   //9

但是在很多情況下,我們需要找出陣列中最大的元素。

var arr=[5,7,9,1]

alert(math.max(arr))    //   這樣卻是不行的。一定要這樣寫

看效能測試:

getmax效能測試

通過20萬個資料的比較, getmax2 時間為 96ms 而 getmax時間為464。 兩者相差5倍

再比如陣列的push方法。

var arr1=[1,3,4];

var arr2=[3,4,5];

如果我們要把 arr2展開,然後乙個乙個追加到 arr1中去,最後讓  arr1=[1,3,4,3,4,5]

arr1.push(arr2)  顯然是不行的。 因為這樣做會得到  [1,3,4, [3,4,5] ]

我們只能用乙個迴圈去乙個乙個的push   (當然也可以用 arr1.concat(arr2) 但是concat方法並不改變 arr1本身)

var arrlen=arr2.length

for(var i=0;i

語言非遞迴求解樹的高度 遞迴思想的巧妙理解

邏輯是數學的少年時代,數學是邏輯的成年時代。羅素 遞迴 這是在程式 演算法設計中的基礎和重中之重。當初理解這一點我也花費了不少時間,對於初學者來說,如何生動形象的展現著一過程,成了理解這一思想的關鍵。這篇博文的來由,源於同學問我的乙個問題 我一看啊,這波,這波是明顯的遞迴啊!程式呼叫自身的程式設計技...

apply和call的用法

應用某一物件的乙個方法,用另乙個物件替換當前物件。引數 thisobj 可選項。將被用作當前物件的物件。argarray 可選項。將被傳遞給該函式的引數陣列。說明 如果 argarray 不是乙個有效的陣列或者不是arguments物件,那麼將導致乙個 typeerror。如果沒有提供 argarr...

apply和call的用法

查了大量的資料,經過n次測試,總結如下 希望給像我一樣的菜鳥有幫助 call 方法名a.call 物件名b,執行a需要的引數,用逗號分隔 看例子 function obj1 function obj2 var k1 new obj1 var k2 new obj2 上面定義了兩個物件它們都有arg這...