原型的概念::原型对象里的所有属性和方法 被所有构造函数实例化出来的对象所共享,类似于java中的 static
正因为共享所以单一的操作 就会影响了全局,因此使用时需注意
基于prototype:为数组扩展方法
//获取数组最大值
function getMax(){var max=this[0];for(var i=0;i<this.length;i++){if(max<this[i]){max=this[i];}}return max; }
//获取数组最小值 function getMin(){var min=0;for(var x=0;x<this.length;x++){if(this[x]<this[min]){min=x;}}return this[min]; } Array.prototype.getMax=getMax; Array.prototype.getMin=getMin;
作者曾经在js开发时候经常用到数组的排序,以下是作者对数组排序的总结以及其他方法的扩展
var Array={}; Array.sorting = {//利用sort方法进行排序 systemSort: function(arr){return arr.sort();},//冒泡排序 bubbleSort: function(arr){var len=arr.length, tmp;for(var i=0;i){for(var j=0;j ){if(arr[j]>arr[j+1]){tmp = arr[j];arr[j] = arr[j+1];arr[j+1] = tmp;}}}return arr;},//快速排序 quickSort: function(arr){var low=0, high=arr.length-1;sort(low,high);function sort(low, high){if(low<high){var mid = (function(low, high){var tmp = arr[low];while(low<high){while(low =tmp){high--;}arr[low] = arr[high];while(low tmp){low++;}arr[high] = arr[low];}arr[low] = tmp;return low;})(low, high);sort(low, mid-1);sort(mid+1,high);}}return arr;},//插入排序 insertSort: function(arr){var len = arr.length;for(var i=1;i ){var tmp = arr[i];for(var j=i-1;j>=0;j--){if(tmp<arr[j]){arr[j+1] = arr[j];}else{arr[j+1] = tmp;break;}}}return arr;},//希尔排序 shellSort: function(arr){console.log(arr);var h = 1;while(h<=arr.length/3){h = h*3+1; //O(n^(3/2))by Knuth,1973 }for( ;h>=1;h=Math.floor(h/3)){for(var k=0;k ){for(var i=h+k;i h){for(var j=i;j>=h&&arr[j] h){var tmp = arr[j];arr[j] = arr[j-h];arr[j-h] = tmp;}}}}return arr;},printArray:function (arr){var str="[";for(var x=0;x ){if(x!=arr.length-1){str+=arr[x]+",";}else{str+=arr[x]+"]";}}//alert(str);return str;},show:function(arr){for(var x=0;x ){for(var y=x+1;y ){if(arr[x]>arr[y]){var temp=arr[x];arr[x]=arr[y];arr[y]=temp;}}} } }