专栏首页极客慕白的成长之路JS实用技巧手记之六

JS实用技巧手记之六

本系列文章旨在记录一些实用的javascript技巧,既可以作为一个知识的积累,又可以作为闲暇时打发时间写写代码的记录。同时也方便日后翻阅~

1. 封装cookie组件

var Cookie = {
    // 读取
    read : function(name){
        var cookieStr = "; "+document.cookie+"; ";
        var index = cookieStr.indexOf("; "+name+"=");
        if (index!=-1){
            var s = cookieStr.substring(index+name.length+3,cookieStr.length);
            return unescape(s.substring(0, s.indexOf("; ")));
        }else{
            return null;
        }
    },
    // 设置
    set : function(name,value,expires){
        var expDays = expires*24*60*60*1000;
        var expDate = new Date();
        expDate.setTime(expDate.getTime()+expDays);
        var expString = expires ? "expires="+expDate.toGMTString() : "";
        var pathString = ";path=/";
        document.cookie = name + "=" + escape(value) + expString + pathString;
    },
    // 删除
    del : function(name){
        var exp = new Date(new Date().getTime()-1);
        var s=this.read(name);
        if(s!=null) {
            document.cookie= name + "="+s+"expires="+exp.toGMTString()+";path=/"
        }
    }
};
// demo:
Cookie.set("xuanfengge", "www.xuanfengge.com", 7);
alert(Cookie.read("xuanfengge"));
Cookie.del("xuanfengge");

2. 字符串比较

var aString = "Hello!";
var bString = new String("Hello!");
if( aString == "Hello!" ){ } //结果: true
if( aString == bString ){ } //结果: true
if( aString === bString ){ } //结果: false (两个对不同,尽管它们的值相同)

3. 检索字符串

var myString = "hello everybody.";
// 如果检索不到会返回-1,检索到的话返回在该串中的起始位置 
if( myString.indexOf("every") > -1 ){ } //结果: true

4. 查找替换字符串

var myString = "I is your father.";
var result = myString.replace("is","am"); //结果: "I am your father."

5. 截取字符串

//截取第 6 位开始的字符
var myString = "Every good boy does fine.";
var section = myString.substring(6); //结果: "good boy does fine."
//截取第 0 位开始至第 10 位为止的字符
var myString = "Every good boy does fine.";
var section = myString.substring(0,10); //结果: "Every good"
//截取从第 11 位到倒数第 6 位为止的字符
var myString = "Every good boy does fine.";
var section = myString.slice(11,-6); //结果: "boy does"
//从第 6 位开始截取长度为 4 的字符
var myString = "Every good boy does fine.";
var section = myString.substr(6,4); //结果: "good"

6. 字数统计(中英文)

function fucCheckLength(strTemp){
    var i,sum;
    sum=0;
    for(i=0;i<strTemp.length;i++){
        if ((strTemp.charCodeAt(i)>=0) && (strTemp.charCodeAt(i)<=255)){
            sum=sum+1;
        }else{
            sum=sum+2;
        }
    }
    return sum;
}
// demo:
fucCheckLength("qwe");        //3
fucCheckLength("轩枫");        //4

7. 字符串是否合法日期

//合法日期:yyyy-mm-dd,分隔符可以为-/.
String.prototype.isDate = function() {
    var year,month,date,day;
    var reg = /^([12]\d{3})([-\/\.])([01]?\d)\2([0-3]?\d)$/;
    
    if (!reg.test(this)) return false;
    
    year  = RegExp.$1.parseInt();
    month = RegExp.$3.parseInt() - 1;
    date  = RegExp.$4.parseInt();
    day = new Date(year,month,date);
    
    return ((date == day.getDate()) && (month == day.getMonth()));
}
// demo:
"1999-12-20".isDate()
// 合法日期:yyyy-mm-dd,分隔符可以为-/

8. 返回两个日期之间的时间间隔

function dateDiff(date1,date2) {
    var year,month,date,day1,day2;
    var reg = /^(\d{4})([-\/\.])(\d{2})\2(\d{2})$/;
 
    reg.test(date1);
    year  = RegExp.$1.parseInt();
    month = RegExp.$3.parseInt() - 1;
    date  = RegExp.$4.parseInt();
    day1 = new Date(year,month,date);
 
    reg.test(date2);
    year  = RegExp.$1.parseInt();
    month = RegExp.$3.parseInt() - 1;
    date  = RegExp.$4.parseInt();
    day2 = new Date(year,month,date);
 
    return (day1.getTime() - day2.getTime()) / 86400000;
}
// demo:
// 用以前,先用isDate()判断一下是否合法日期
// 注意:这个函数的reg和isDate()里的reg小you不同
// 以天为单位(date1-date2=?),可以用来比较2个日期大小

9. 判断是否为空对象

function isEmpty(obj){
    for(var key in obj){
        return false;
    }
    return true;
}
// demo:
isEmpty({});    //true
isEmpty({"key":"value"});    //false
// jq版本
$.isEmptyObject({});    //true
$.isEmptyObject({"key", "value"});    //false

10. 获取对象的属性个数

Object.prototype.length = function() {
    var count = 0;
    for(var i in this){
        count ++;
    }
    return count;
};
// demo:
var a = {a:1, b:2, c:3, d:4};
alert(a.length());    // 5

除特别注明外,本站所有文章均为慕白博客原创,转载请注明出处来自https://geekmubai.com/programming/166.html

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • JavaScript代码压缩细节

    对于Javascript来说,提高网络下载的性能最直接的方法就是把JS文件体积减小。

    慕白
  • 迅雷资源助手(TSearch) – 种子搜索神器

    迅雷资源助手迅雷资源助手 是一款搜索下载资源的 p2p 种子搜索器,绿色软件,可以进行磁力搜索,电驴搜索,种子搜索,网盘搜索,搜索质量远高于 p2psearch...

    慕白
  • Xposed源码概述以及衍生的免Root框架

    XPosed是与Cydia其名的工具,它能够让Android设备在没有修改源码的情况下修改系统中的API运行结果。我们通常称之为:God Mode(上帝模式)。

    慕白
  • 给单元素艺术添加动画

    原文:Animating Single Div Art 翻译:nzbin 导读:学习工具的最好的方法就是尝试新技术,本文通过“单元素艺术”介绍了 CSS 变量的...

    叙帝利
  • JS知识总结

    var cars=new Array("Saab","Volvo","BMW"):

    阮键
  • 在 Silverlight 5 项目中使用 async/await

    .Net 4.5 提供了 async/await 让异步编程回归同步, 不过, async/await 不是只能在 .Net 4.5 下才能使用, 通过使用 A...

    beginor
  • java10系列(二)Local-Variable Type Inference

    本文主要解读下java10的Local-Variable Type Inference

    codecraft
  • Arcgis for js实现北京地铁的展示

    在chrom中输入地址http://map.baidu.com/subways/index.html?c=beijing

    lzugis
  • Java 10 var关键字详解和示例教程【面试+工作】

    在本文中,我将通过示例介绍新的Java SE 10特性——“var”类型。你将学习如何在代码中正确使用它,以及在什么情况下不能使用它。

    Java帮帮
  • 批量导出某个简书用户的所有文章列表和文章超链接

    虽然简书提供了批量下载文章的功能,但是下载到本地的文章都是markdown格式的,不包含文章的链接,这不满足我的需求。

    Jerry Wang

扫码关注云+社区

领取腾讯云代金券