JS框架设计读书笔记之-函数
这次写一些函数
1.
Object.keys = Object.keys || function(obj){ var a = []; // a[0],a[1]...分别赋值为obj的键 for(a[a.length] in obj); return a; }
2.
function repeat(target,n){ var s = target,total = ''; while(n > 0){ if(n % 2 == 1){ total += s; } if(n == 1){ break; } s += s; n >>= 1; } return total; } repeat('abc',3); //abcabcabc
function byteLen(target){ // 现获取字符串的长度 var byteLength = target.length,i = 0; for(;i<target.length;i++){ // 半角字符码在0-255 大于255长度就+1 if(target.charCodeAt(i) > 255){ byteLength++; } } return byteLength; }
4.
function truncate(target,length,truncation){ //参数修正 length = length || 30; trunction = trunction === undefined ? '...' : trunction; return target.length > length ? target.slice(0,length-trunction.length) + trunction : String(target); }
function trim(str){ return str.replace(/^\s+|\s+$/g,''); }
function shuffle(arr){ var j, x, i = arr.length; for(; i > 0;){ // 从最后一个元素开始 进行随机交换 j = parseInt(Math.random()*i); x=arr[--i]; arr[i]=arr[j]; // 保证元素不丢失 arr[j]=x; } return target; }
function flatten(arr){ var result = []; arr.forEach(function(item){ if(Array.isArray(item)){ // 碰到数组进行递归 result = result.concat(flatten(item)); } else{ // 元素依弹入数组 result.push(item); } }); return result; }
// IE6,IE7下unshift不返回数组长度 // 先进行判断 if([].unshift(1)!==1){ var _unshift = Array.prototype.unshift; Array.prototype.unshift = function(){ _unshift.apply(this,arguments); // 仅仅修正返回值 return this.length; } }
老子要日穿V8引擎