如何為數(shù)組取最大值與最小值。最笨的方法估計是這樣:
            Array.prototype.max = function() {   
 var max = this[0]; 
 var len = this.length;  
 for (var i = 1; i < len; i++){    
  if (this[i] > max) {       
   max = this[i];    
  }  
 }    
 return max; 
} 
Array.prototype.min = function() { 
 var min = this[0]; 
 var len = this.length; 
 for (var i = 1; i < len; i++){  
  if (this[i] < min){      
   min = this[i];    
  }   
 }    
 return min; 
}
如果你是引入類庫進(jìn)行工作,害怕類庫也實現(xiàn)了同名的原型方法,我們可以在生成之前進(jìn)行判斷:
if (typeof Array.prototype['max'] == 'undefined') {  
 Array.prototype.max = function() {     
  //************略************* 
 } 
}
但這兩個擴(kuò)展實現(xiàn)得的確不怎么樣?!有什么原生的方法可以給我們用一用呢?John Resig巧妙地利用apply方法來調(diào)用原生的Math.max與Math.min方法迅速求得結(jié)果。apply能讓一個方法指定調(diào)用對象與傳入?yún)?shù),并且傳入?yún)?shù)是以數(shù)組形式組織的。恰恰現(xiàn)在有一個方法叫Math.max,調(diào)用對象為Math,與多個參數(shù)。 
            Array.max = function( array ){    
 return Math.max.apply( Math, array ); 
}; 
 
Array.min = function( array ){     
 return Math.min.apply( Math, array ); 
};
不過,John Resig是把它們做成Math對象的靜態(tài)方法,不能使用大神最愛用的鏈?zhǔn)秸{(diào)用了。但這方法還能更精簡一些,不要忘記,Math對象也是一個對象,我們用對象的字面量來寫,又可以省幾個比特了。
            Array.prototype.max = function(){   
 return Math.max.apply({},this) 
} 
Array.prototype.min = function(){   
 return Math.min.apply({},this) 
}
[1,2,3].max()// => 3 
[1,2,3].min()// => 1