博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript代码片段
阅读量:6252 次
发布时间:2019-06-22

本文共 28725 字,大约阅读时间需要 95 分钟。

简介:本文收集了我常用的JavaScript代码片段,欢迎提意见!

大灰狼边敲门边说:“小兔子乖乖,把门儿开开!”小兔子听到后,连忙去开门:“来喽!”兔妈妈对小兔子喊道:“不许开!是大灰狼!”大灰狼在门口感叹道:“哎,骗一个女孩容易,骗一个女人难呀!”

JavaScript动态加载

//NO.1function loadScript(url, callback){    var script = document.createElement ("script")    script.type = "text/javascript";    if (script.readyState){ //IE        script.onreadystatechange = function(){            if (this.readyState == "loaded" || this.readyState == "complete"){                this.onreadystatechange = null;                callback();            }        };    } else { //Others        script.onload = function(){            callback();        };    }    script.src = url;    document.getElementsByTagName("head")[0].appendChild(script);}//NO.2function loadScript(url, callback){    var xhr = new XMLHttpRequest();    xhr.open("get", url, true);    xhr.onreadystatechange = function(){        if (xhr.readyState == 4){            if (xhr.status >= 200 && xhr.status < 300 || xhr.status == 304){                var script = document.createElement ("script");                script.type = "text/javascript";                script.text = xhr.responseText;                document.body.appendChild(script);                callback();            }        }    };    xhr.send(null);}
View Code

DOM加载完执行

function domLoad(fn){    if(document.addEventListener){        document.addEventListener("DOMContentLoaded", fn, false);    }else{        if(window.ActiveXObject){            document.write("
View Code

是否标准模式(IE)

function isCompatMode(){
return document.compatMode == 'CSS1Compat';}
View Code

Link规则操作

//添加第一条规则//insertRule(sheet, 'body', 'background-color:red', 0);function insertRule(sheet, selectorText, cssText, position) {    if (sheet.insertRule) {        sheet.insertRule(selectorText + ' { ' + cssText + ' }', position);    } else if (sheet.addRule) {        sheet.addRule(selectorText, cssText, position);    }}//删除第一条规则//deleteRule(sheet, 0);function deleteRule(sheet, position) {    if (sheet.deleteRule) {        sheet.deleteRule(position);    } else if (sheet.removeRule) {        sheet.removeRule(position);    }}
View Code

加载样式表

function addSheet(url){    var oLink = document.createElement('link'),oHead = document.getElementsByTagName('head')[0];    oLink.rel = 'stylesheet';    oLink.type = 'text/css';    oLink.href = url;    oHead.appendChild(oLink);}
View Code

获取CSS样式

function getStyle(o, attr){    if(o.currentStyle){        return o.currentStyle[attr];    }    else{        return getComputedStyle(o,false)[attr];    }}
View Code

getByClass

function getElementsByClassName(classname, parent, nodename) {    var parent = parent || document, nodename = nodename || "*";    if(parent.getElementsByClassName){        return parent.getElementsByClassName(classname);    }else{        var l = parent.getElementsByTagName(nodename);        return function () {            var res = [];            for (var i = 0, j = l.length; i < j; i++) {                if (l[i].className){                    var name = " " + l[i].className + " ";                    if (name.indexOf(" " + classname + " ") != -1) {                        res.push(l[i]);                    }                }            }            return res;        } ();    }}
View Code

hasClass

function hasClass (element, className){    return element.className.match(new RegExp('(\\s|^)'+ className +'(\\s|$)'));}
View Code

addClass

function addClass(element, cName) {    if (!hasClass(element, cName)) {        element.className += ' ' + cName;    }}
View Code

removeClass

function removeClass(element, cName) {    if (hasClass(element, cName)) {        element.className = element.className.replace(new RegExp('(\\s|^)' + cName + '(\\s|$)'), ' ');    }}
View Code

JSONP调用

View Code

获取服务器时间

function getNowDate(callback){    var xhr = new XMLHttpRequest();    xhr.open('get', 'null.txt', true); //null.txt不存在,我们不需要    xhr.onreadystatechange = function(){        if(xhr.readyState == 3){ //状态3响应            callback(xhr.getResponseHeader('Date')); //返回时间,那么可以利用获得的时间做倒计时程序了。        }    };    xhr.send(null);}
View Code

Cookie操作

function Cookie(name, value, options){    if(typeof value != 'undefined'){        options = options || {};        if(value === null){            options.expires = -1; //过期        }        var expires = '';        //存在时间选项        if(options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)){            var date;            if(typeof options.expires == 'number'){                date = new Date();                date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));            }else{                date = options.expires;            }            expires = '; expires='+date.toUTCString();        }        var path = options.path ? '; path='+options.path : '';        var domain = options.domain ? '; domain='+options.domain : '';        var secure = options.secure ? '; secure' : '';        //写入cookie        document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');    }else{
//读取cookie var cookValue = null; if(document.cookie && document.cookie != ''){ var cookie = document.cookie.split(';'); for(var i = 0, len = cookie.length; i < len; i++){ var c = cookie[i].replace(/^\s+|\s+$/g, ''); if(c.substring(0, name.length + 1) == (name + '=')){ cookValue = decodeURIComponent(c.substring(name.length + 1)); break; } } } return cookValue; }}//设置Cookie("user", "Jununx");//获取Cookie("user");//删除Cookie("user", null);
View Code

base64编码解码 

function b64Encode(str) {  return btoa(unescape(encodeURIComponent(str)));}function b64Decode(str) {  return decodeURIComponent(escape(atob(str)));}
View Code

浏览器判断

var browser = function() {    var u = navigator.userAgent.toLowerCase();    return {         version: (u.match(/.+(?:rv|it|ra|ie|chrome|micromessenger|version)[\/: ]([\d.]+)/) || [])[1],             safari: /safari/.test(u) && !/chrome/.test(u),         opera: /opera/.test(u),         msie: /msie|like gecko$/.test(u) && !/opera/.test(u),         firefox: /firefox/.test(u) && !/(compatible|webkit)/.test(u),        chrome: /chrome/.test(u) && /safari/.test(u),                  mobile: !!/applewebkit.*mobile.*/.test(u),        ios: !!/\(i[^;]+;( u;)? cpu.+mac os x/.test(u),        android: /android|linux/.test(u), // android或uc        iPhone: /iphone/.test(u),        iPad: /ipad/.test(u),        weChat: /micromessenger/.test(u) // 微信    };};
View Code

IE版本判断

var _IE = (function(){    var v = 3, div = document.createElement('div'), all = div.getElementsByTagName('i');    while (            div.innerHTML = '
', all[0] ); return v > 4 ? v : false ;}());
View Code

阶乘缓存

function memfactorial(n){    if(!memfactorial.cache){        memfactorial.cache = {            "0" : 1,            "1" : 1        };    }    if(!memfactorial.cache.hasOwnProperty(n)){        memfactorial.cache[n] = n * memfactorial(n - 1);    }    return memfactorial.cache[n];}
View Code

获取字符串长度

// NO.1String.prototype.sLen = function(){    var b = 0, l = this.length;    if(l){        for(var i = 0; i < l; i++){            if(this.charCodeAt(i) > 255){                b += 2;            }else{                b ++;            }        }        return b;    }else{        return 0;    }};// NO.2String.prototype.sLen = function(){    var b = 0, l = this.length;    if(l){        for(var i = 0; i < l; i++){            var c = this.charAt(i);            if(escape(c).length > 4){                b += 2;            }else if(c != '\r'){                b ++;            }        }        return b;    }else{        return 0;    }};// NO.3String.prototype.sLen = function(){    var b = 0, l = this.length;    if(l){        for(var i = 0; i < l; i++){            var c = this.charAt(i);            if(/^[\u0000-\u00ff]$]/.test(c)){                b ++;            }else if(c != '\r'){                b += 2;            }        }        return b;    }else{        return 0;    }};// NO.4String.prototype.sLen = function(){   var s = this.replace(/[^\x00-\xff]/g, "**");   return s.length;};
View Code

判断数据类型

var isType = function(obj, type){    return Object.prototype.toString.call(obj) === '[object '+ type +']';};
View Code

获取窗口位置

function sereen(){    return {        left : window.screenLeft || window.scrollX,        top : window.screenTop || window.scrollY    };}
View Code

获取可视窗口大小

function client(){    //IE6不加dtd会进入怪癖模式,client需要通过document.body获取    return {        width : document.documentElement.clientWidth || document.body.clientWidth,        height : document.documentElement.clientHeight || document.body.clientHeight    };}
View Code

获取scrollTop

function getScrollTop(){    if(typeof pageYOffset!= 'undefined'){        return pageYOffset;    } else {        return (document.body || document.documentElement).scrollTop;    }}
View Code

滚动到指定区域

el.scrollIntoView()
View Code

今天星期几

"今天是星期" + "天一二三四五六".charAt(new Date().getDay())
View Code

页面是否在iframe里

if(self==top){    //not in iframe}else{    //in iframe}
View Code

返回最小值~最大值之间随机数

function random(min, max) {    return Math.floor(Math.random() * (max - min + 1) + min);}
View Code

数组去重

// NO.1Array.prototype.unique = function() {    for(var i=0, len = this.length; i
View Code

数组快排

function quickSort(arr) {    if (arr.length < 2) {        return arr;    }    var pivotIndex = Math.floor(arr.length / 2);    var pivot = arr.splice(pivotIndex, 1)[0];    var left = [];    var right = [];    for (var i = 0, j = arr.length; i < j; i++) {        if (arr[i] < pivot) {            left.push(arr[i]);        } else {            right.push(arr[i]);        }    }    return quickSort(left).concat([pivot], quickSort(right));}var test = quickSort([1,9,2,8,3,7,4,6,5]);
View Code

将arguments转换成数组

var arr = Array.prototype.slice.call(arguments, 0);
View Code

数组随机排序

var arr = [1, 2, 3, 4, 5];arr.sort(function(){    return (Math.random() - 0.5);});
View Code

获取数组中最小/大值

var max = Math.max.apply(null, array);var min = Math.min.apply(null, array);
View Code

数组index

function index(t, arr){    if(arr.indexOf){        return arr.indexOf(t);    }    for(var i = arr.length ; i--; ){        if(arr[i]===t){            return i*1;        }    }    return -1;}
View Code

多维数组转一维数组

function arr2ToArr(arr){    return arr.toString().split(",");}
View Code

选择数组中两数之和等于某值的情况 

// NO.1var arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], result = [], count = 10;for(var i = 0, len = arr.length; i < len; i ++){    for(var j = i + 1; j < len; j ++){        if(arr[i] + arr[j] === count){            result.push([arr[i], arr[j]]);        }    }}// NO.2var arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], result = [], count = 10;for(var i = 0, len = Math.round(arr.length/2); i < len; i ++){    if(arr.indexOf(count - arr[i]) !== -1){        result.push([arr[i], count - arr[i]]);    }}
View Code

数字金额转换成大写

function digit_uppercase(n) {    var fraction = ['角', '分'];    var digit = [        '零', '壹', '贰', '叁', '肆',        '伍', '陆', '柒', '捌', '玖'    ];    var unit = [        ['元', '万', '亿'],        ['', '拾', '佰', '仟']    ];    var head = n < 0? '欠': '';    n = Math.abs(n);    var s = '';    for (var i = 0; i < fraction.length; i++) {        s += (digit[Math.floor(n * 10 * Math.pow(10, i)) % 10] + fraction[i]).replace(/零./, '');    }    s = s || '整';    n = Math.floor(n);    for (var i = 0; i < unit[0].length && n > 0; i++) {        var p = '';        for (var j = 0; j < unit[1].length && n > 0; j++) {            p = digit[n % 10] + unit[1][j] + p;            n = Math.floor(n / 10);        }        s = p.replace(/(零.)*零$/, '')                .replace(/^$/, '零')                + unit[0][i] + s;    }    return head + s.replace(/(零.)*零元/, '元')            .replace(/(零.)+/g, '零')            .replace(/^整$/, '零元整');}
View Code

日期格式化

Date.prototype.toString=function(format,loc){    var time={};    time.Year=this.getFullYear();    time.TYear=(""+time.Year).substr(2);    time.Month=this.getMonth()+1;    time.TMonth=time.Month<10?"0"+time.Month:time.Month;    time.Day=this.getDate();    time.TDay=time.Day<10?"0"+time.Day:time.Day;    time.Hour=this.getHours();    time.THour=time.Hour<10?"0"+time.Hour:time.Hour;    time.hour=time.Hour<13?time.Hour:time.Hour-12;    time.Thour=time.hour<10?"0"+time.hour:time.hour;    time.Minute=this.getMinutes();    time.TMinute=time.Minute<10?"0"+time.Minute:time.Minute;    time.Second=this.getSeconds();    time.TSecond=time.Second<10?"0"+time.Second:time.Second;    time.Millisecond=this.getMilliseconds();    time.Week=this.getDay();    var MMMArrEn=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];    var MMMArr=["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"];    var WeekArrEn=["Sun","Mon","Tue","Web","Thu","Fri","Sat"];    var WeekArr=["星期日","星期一","星期二","星期三","星期四","星期五","星期六"];    var oNumber=time.Millisecond/1000;    if(format!=undefined && format.replace(/\s/g,"").length>0){        if(loc!=undefined && loc =="en"){            MMMArr=MMMArrEn.slice(0);            WeekArr=WeekArrEn.slice(0);        }        format=format                .replace(/yyyy/ig,time.Year)                .replace(/yyy/ig,time.Year)                .replace(/yy/ig,time.TYear)                .replace(/y/ig,time.TYear)                .replace(/MMM/g,MMMArr[time.Month-1])                .replace(/MM/g,time.TMonth)                .replace(/M/g,time.Month)                .replace(/dd/ig,time.TDay)                .replace(/d/ig,time.Day)                .replace(/HH/g,time.THour)                .replace(/H/g,time.Hour)                .replace(/hh/g,time.Thour)                .replace(/h/g,time.hour)                .replace(/mm/g,time.TMinute)                .replace(/m/g,time.Minute)                .replace(/ss/ig,time.TSecond)                .replace(/s/ig,time.Second)                .replace(/fff/ig,time.Millisecond)                .replace(/ff/ig,oNumber.toFixed(2)*100)                .replace(/f/ig,oNumber.toFixed(1)*10)                .replace(/EEE/g,WeekArr[time.Week]);    }    else{        format=time.Year+"-"+time.Month+"-"+time.Day+" "+time.Hour+":"+time.Minute+":"+time.Second;    }    return format;}var d=new Date();console.log(d.toString());    //2012-7-27 9:26:52console.log(d.toString(""));    //2012-7-27 9:26:52console.log(d.toString("yyyy-MM-dd HH:mm:ss"));    //2012-07-27 09:26:52console.log(d.toString("yyyy年MM月dd日 HH:mm:ss"));    //2012年07月27日 09:26:52console.log(d.toString("yyyy-MM-dd HH:mm:ss fff"));    //2012-07-27 09:26:52 237console.log(d.toString("yyyy年 MMM dd EEE"));    //2012年 七月 27 星期五console.log(d.toString("yyyy MMM dd EEE","en"));    //2012 Jul 27 Fri
View Code

五种继承方式

//构造函数的继承的五种方式function Animal() {    this.species = "dong wu";}// NO.1 构造函数绑定function Cat(name, color) {    Animal.apply(this, arguments);    this.name = name;    this.color = color;}// NO.2 prototype模式function Cat (name, color) {    this.name = name;    this.color = color;}Cat.prototype = new Animal();Cat.prototype.constructor = Cat;// NO.3 直接继承prototypefunction Cat(name, color) {    this.name = name;    this.color = color;}Cat.prototype = Animal.prototype;Cat.prototype.constructor = Cat;// NO.4 利用空对象做中介function Cat(name, color) {    this.name = name;    this.color = color;}function F(){}F.prototype = Animal.prototype;Cat.prototype = new F();Cat.prototype.constructor = Cat;// NO.5 拷贝继承function Cat(name, color) {    this.name = name;    this.color = color;}function extend(Child, Parent) {    var p = Parent.prototype;    var c = Child.prototype;    for (var i in p) {        c[i] = p[i];    }    c.uber = p;}extend(Cat, Animal);
View Code

根据生日算年龄

function getAge(dateString) {    var today = new Date();    var birthDate = new Date(dateString);    var age = today.getFullYear() - birthDate.getFullYear();    var m = today.getMonth() - birthDate.getMonth();    if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) {        age--;    }    return age;}console.log(getAge("1990,1,12"));
View Code

事件绑定

var events = (function(win){    // 事件绑定    function on(el, ev, fn){        if(el.addEventlistener){            on = function (el, ev, fn) {                el.addEventlistener(ev, fn, false);            };        } else if(el.attachEvent){            on = function(el, ev, fn){                el.attachEvent('on' + ev, function(){                    fn.call(el); // IE This                });            };        } else {            on = function(el, ev, fn){                el['on' + ev] = fn;            };        }        on(el, ev, fn);    }    // 解除事件绑定    function off(el, ev, fn){        if(el.removeEventlistener){            off = function (el, ev, fn) {                el.removeEventlistener(ev, fn, false);            };        } else if(el.detachEvent){            off = function(el, ev, fn){                el.detachEvent('on' + ev, fn);            };        } else {            off = function(el, ev){                el['on' + ev] = null;            };        }        off(el, ev, fn);    }    // 获取事件对象    function getEvent(ev){        return ev || win.event;    }    // 获取事件目标    function getTarget(ev){        return ev.target || ev.srcElement;    }    // 获取键值    function getKeyCode(ev){        if (typeof ev.charCode == 'number'){            getKeyCode = function(ev){                return ev.charCode;            };        } else {            getKeyCode = function(ev){                return ev.keyCode;            };        }        getKeyCode(ev);    }    // 阻止默认行为    function preventDefault(ev){        if(ev.preventDefault){            preventDefault = function(ev){                ev.preventDefault();            };        } else {            preventDefault = function(ev){                ev.returnValue = false;            };        }        preventDefault(ev);    }    // 阻止冒泡    function stopPropagation(ev){        if(ev.stopPropagation){            stopPropagation = function(ev){                ev.stopPropagation();            };        } else {            stopPropagation = function(ev){                ev.cancelBubble = true;            };        }        stopPropagation(ev);    }    return {        on: on,        off: off,        getEvent: getEvent,        getTarget: getTarget,        getKeyCode: getKeyCode,        preventDefault: preventDefault,        stopPropagation: stopPropagation    };}(window));
View Code

自定义事件

var EventHandlers = {    events: {},    fire: function(ev, arg){        if(this.events[ev]){            var e = this.events[ev];            for(var i = 0, len = e.length; i < len; i++){                e[i](arg);            }        }    },    on: function(ev, fn){        if(!this.events[ev]){            this.events[ev] = [];        }        this.events[ev].push(fn);    },    off: function(ev, fn){        if(this.events[ev]){            var e = this.events[ev];            for(var i = 0, len = e.length; i < len; i++){                if(e[i] == fn){                    e.splice(i, 1);                    break;                }            }        }    }};
View Code

加载获取图片尺寸

var img = new Image();img.onload = function() {    console.log(this.width + 'x' + this.height);}
View Code

Object.create

var create = Object.create || function(o){    var F = function(o){};    F.prototype = o;    return new F;};
View Code

Object.prototype.bind

var bind = Object.prototype.bind || function (scope) {    var fn = this;    return function () {        return fn.apply(scope);    };};
View Code

设置选定文本

//选定文本function setSelectText(text, start, num) {    if (text.setSelectionRange) {        text.setSelectionRange(start,num);        text.focus();    } else if (text.createTextRange) {        var range = text.createTextRange();        range.collapse(true);        range.moveStart('character',start);        range.moveEnd('character',num - start);                //用最后的位置 - 开始的位置 = 个数        range.select();    }}
View Code

获取选择文本

function getSelectedText(id){    var o = document.getElementById(id);    if(window.getSelection) {        if(o.selectionStart != undefined && o.selectionEnd != undefined){            return o.value.substring(o.selectionStart, o.selectionEnd);        }    }    else{        return document.selection.createRange().text;    }}
View Code

在光标位置插入字符串

// 光标位置插入字符串function insertHtmlAtCursor(id, text){    var o = document.getElementById(id);    if (document.selection){        o.focus();        document.selection.createRange().text = text;        o.focus();    }    else if (o.selectionStart) {        var start = o.selectionStart, end = o.selectionEnd;        o.value = o.value.substring(0, start) + text + o.value.substring(end, o.value.length);    }}
View Code

在url中查找指定参数的值

function getQuery(){    var s = (location.search.length > 0 ? location.search.substring(1) : ''),        res = {},        items = s.length ? s.split('&') : [],        item = null, name = null, value = null,        i, len = items.length;        for (i = 0; i < len; i++){            item = items[i].split('=');            name = decodeURIComponent(item[0]);            value = decodeURIComponent(item[1]);            if(name.length){                res[name] = value;            }        }    return res;}
View Code

IE6里a:hover图片缓存

document.execCommand("BackgroundImageCache",false,true);
View Code

反转文本顺序

String.prototype.reverse = function (){    if(this.length < 2){        return this;    }    var str = this.split(''), result = '', len = this.length - 1;    while(len >= 0){        result += this[len];        len --;    }    return result;}'反转文本顺序'.reverse();
View Code

清除空格

String.prototype.trim = String.trim || function() {    return this.replace(/^\s*(.*?)\s+$/, "$1")};
View Code

加入收藏

function addFavorite(url, title) {    try {        window.external.addFavorite(url, title);    } catch(e) {        try {            window.sidebar.addPanel(title, url, "");        } catch(e) {            alert("加入收藏失败,请使用Ctrl+D进行添加");        }    }}
View Code

设为首页

function setHomepage(url) {    if (document.all) {        document.body.style.behavior = 'url(#default#homepage)';        document.body.setHomePage(url)    } else if (window.sidebar) {        if (window.netscape) {            try {                netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")            } catch(e) {                alert("该操作被浏览器拒绝,如果想启用该功能,请在地址栏内输入 about:config,然后将项 signed.applets.codebase_principal_support 值该为true")            }        }        var prefs = Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch);        prefs.setCharPref('browser.startup.homepage', url)    }}
View Code

insertAfter

function insertAfter(newChild,refChild){    var parElem=refChild.parentNode;    if(parElem.lastChild==refChild){        refChild.appendChild(newChild);    }else{        parElem.insertBefore(newChild,refChild.nextSibling);    }}
View Code

innerText操作

//获取innertextfunction getInnerText(element) {    if (typeof element.textContent == 'string') {        return element.textContent;    } else {        return element.innerText;    }}//设置innertextfunction setInnerText(element, text) {    if (typeof element.textContent == 'string') {        element.textContent = text;    } else {        element.innerText = text;    }}
View Code

获取offsetTop

//获取offsetTopfunction offsetTop(element) {    var top = element.offsetTop;        //第一层的距离    var parent = element.offsetParent;    while (parent !== null) {        top += parent.offsetTop;        parent = parent.offsetParent;    }    return top;}
View Code

构建字符串的最优方法

var arr = ['item 1', 'item 2', 'item 3', ...];  var list = '
  • ' + arr.join('
  • ') + '
';
View Code

获取字符串中出现次数最多的字符 

// NO.1String.prototype.strCount = function (){    var num = 0, val = '', result = null, temp = '', that = this;    while (that) {        temp = that;        val = that.substr(0, 1);        that = that.replace(new RegExp(val, "g"), "");        if (temp.length - that.length > num) {            num = temp.length - that.length;            result = {val:val, num: num};        }    }    return result;};// NO.2String.prototype.strCount = function (){    var obj = {}, num = 0, val = '';    for(var i = 0, len = this.length; i < len; i+=1){        if(!obj[this[i]]){            obj[this[i]] = [];        }        obj[this[i]].push(this[i]);    }    for(var arr in obj){        if(num < obj[arr].length){            num = obj[arr].length;            val = obj[arr][0];        }    }    return {val:val, num: num};};// NO.3function strCount(str){    var o = {}, ret = {name: '', num: 0};    for(var i = 0, len = str.length; i < len; i++){        if( o[str[i]] ) {            o[str[i]]++;        }else{            o[str[i]] = 1;        }        if(ret.num < o[str[i]]){            ret.name = str[i];            ret.num = o[str[i]];        }    }    return ret;}// NO.4function strCount(str){    var ret = {name: '', num: 0};    str.split('').sort().join('').replace(/(\w)\1+/g, function($0, $1){        if ( ret.num < $0.length ) {            ret.num = $0.length;            ret.name = $1;        }    });    return ret;}
View Code

对象深度clone 

var cloneObj = function(obj){    var newobj, s;    if(typeof obj !== 'object'){        return;    }    newobj = obj.constructor === Object ? {} : [];    if(window.JSON){        s = JSON.stringify(obj), //系列化对象        newobj = JSON.parse(s); //反系列化(还原)    }else{        if(newobj.constructor === Array){            newobj.concat(obj);        }else{            for(var i in obj){                newobj[i] = obj[i];            }        }    }    return newobj;};
View Code

千分位表示

// NO.1function millesimal(v){    var num = v.length%3, prev = '', next = v.substring(num), arr = [];    if(num !== 0){        prev = v.substring(0, num);        arr.push(prev);    }    for(var i = 0, len = next.length; i < len; i += 3){        arr.push(next.substr(i,3))    }    return arr.join();}// NO.2function millesimal(v){    return v.toString().replace(/(?=(?!\b)(\d{3})+$)/g, ',');}// NO.3function millesimal(v){    return v.toString().replace(/\B(?=(\d{3})+$)/g, ',');}
View Code

替换全部

String.prototype.replaceAll = function(s1, s2) {    return this.replace(new RegExp(s1, "gm"), s2)}
View Code

HTML转义

// 转义html标签function HtmlEncode(text) {    return text.replace(/&/g, '&').replace(/\"/g, '"').replace(//g, '>')}// 还原html标签function HtmlDecode(text) {    return text.replace(/&/g, '&').replace(/"/g, '\"').replace(/</g, '<').replace(/>/g, '>')}
View Code

随机字符串(字母&数字)

function randomStringNum(len) {    var ret = "";    for( ; ret.length < len; ret += Math.random().toString(36).substr(2));    return ret.substr(0, len);}
View Code

随机颜色 

// (0xffffff+1) 表示颜色最大值(0x000000 ~ 0xffffff+1)// <<0             表示左移一位,将颜色16进制的颜色值转成整型// toString(16) 表示再将整型的颜色值转成16进制// slice(-6)     表示生成的16进制值少于6位时,首尾依次补0var getRandomColor = function(){    return '#'+('00000'+(Math.random()*(0xffffff+1)<<0).toString(16)).slice(-6);};
View Code

curry

function currying(fn) {    var args = [].slice.call(arguments, 1);    return function() {        var newArgs = args.concat([].slice.call(arguments));        return fn.apply(null, newArgs);    }}// usevar test = currying(function() {    console.log(arguments);}, 'a');test(1);
View Code

uncurrying

Function.prototype.uncurrying = function(){    var self = this;    return function(){        return Function.prototype.call.apply(self, arguments);    }};
View Code

函数节流

// 函数节流var throttle = function(fn, interval){    var self = fn,        timer,        firstTime = true;    return function(){        var args = arguments,            that = this;        if(firstTime){            self.apply(that, args);            return firstTime = false;        }        if(timer){            return false;        }        timer = setTimeout(function(){            clearTimeout(timer);            timer = null;            self.apply(that, args);        }, interval || 500);    };};
View Code

分时调用

/** * [timeChunk 分时调用] * @param  {[type]}   arr   [数据] * @param  {Function} fn    [处理函数] * @param  {[type]}   count [执行次数] */var timeChunk = function(arr, fn, count){    var obj, t, len = arr.length;    var start = function(){        for (var i = 0, obj; i < Math.min(count || 1, arr.length); i++){            obj = arr.shift();            fn(obj);        }    };    return function(){        t = setInterval(function(){            if (arr.length === 0){                return clearInterval(t);            }            start();        }, 200);    };};
View Code

单例模式抽象

// 单例模式抽象var getSingle = function(fn){    var res;    return function(){        return res || (res = fn.apply(this, arguments));     }};
View Code

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/jununx/p/3612280.html

你可能感兴趣的文章
PHP 面向对象
查看>>
getResourceAsStream和getResource的用法及Demo实例
查看>>
[C#] string 与 String,大 S 与小 S 之间没有什么不可言说的秘密
查看>>
javascript 自定义错误处理
查看>>
POJ 3278 Catch That Cow(BFS,板子题)
查看>>
Ubuntu下U盘只读文件系统,图标上锁,提示无法修改
查看>>
TCP/IP具体解释学习笔记--TCP的超时与重传
查看>>
C#设计模式之十一享元模式(Flyweight Pattern)【结构型】
查看>>
基于zookeeper简单实现分布式锁
查看>>
Makefile:160: recipe for target 'all' failed (Ubuntu 16.06 + Opencv3.2)解决办法
查看>>
a WebSite for MapXtreme2005 Crack
查看>>
几种函数调用方式
查看>>
【MySQL】MySQL 常用语法之锁表与解锁表
查看>>
【142】阿蛮歌霸使用技巧
查看>>
HTTP 请求报文 响应报文
查看>>
[转载] 程序员必看:请不要做浮躁的人 24法则
查看>>
JavaWeb_JavaEE_命名规则
查看>>
HDU 4010 Query on The Trees
查看>>
[PAL规范]SAP HANA PAL 数据处理四分位间距检测Inter-quartile Range Test编程规范IQRTEST...
查看>>
[HDU 1317]XYZZY[SPFA变形][最长路]
查看>>