首页 > 语言 > JavaScript > 正文

javascript常用代码段搜集

2024-05-06 16:11:24
字体:
来源:转载
供稿:网友
这篇文章主要记录了本人搜集的几段javascript常用代码段,都是平时项目中需要用到的,需要的朋友可以参考下
 
 

1.json转字符串

 

复制代码代码如下:

function json2str(o) {
    var arr = [];
    var fmt = function (s) {
        if (typeof s == 'object' && s != null) return json2str(s);
        return /^(string|number)$/.test(typeof s) ? "'" + s + "'" : s;
    };
    for (var i in o) arr.push("'" + i + "':" + fmt(o[i]));
    return '{' + arr.join(',') + '}';
}

 

2.时间戳转为Date

 

复制代码代码如下:

function fromUnixTime(timeStamp) {
    if (!timeStamp || timeStamp < 1000 || timeStamp == ' ') return "";
    var theDate = new Date(parseInt(timeStamp) * 1000);
    return theDate;
}

 

3.Data-format

 

复制代码代码如下:

// 作者: meizz  
// 对Date的扩展,将 Date 转化为指定格式的String   
// 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符,   
// 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字)   
// 例子:   
// (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2012-12-02 08:12:04.423   
// (new Date()).Format("yyyy-M-d h:m:s.S")      ==> 2012-12-02 8:12:4.18   
Date.prototype.Format = function(fmt) {  
    var o = {
        "M+": this.getMonth() + 1,                 //月份   
        "d+": this.getDate(),                    //日   
        "h+": this.getHours(),                   //小时   
        "m+": this.getMinutes(),                 //分   
        "s+": this.getSeconds(),                 //秒   
        "q+": Math.floor((this.getMonth() + 3) / 3), //季度   
        "S": this.getMilliseconds()             //毫秒   
    };
    if (/(y+)/.test(fmt))
        fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
    for (var k in o)
        if (new RegExp("(" + k + ")").test(fmt))
            fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
    return fmt;
};

 

4.日期上增加n天

 

复制代码代码如下:

function addDay(number) {
        return fromUnixTime(new Date().getTime() / 1000 + 24 * 60 * 60 * number);
}

 

5. 使用 iframe 时,父窗体与子窗体之间的相互调用

 

复制代码代码如下:

// 父窗体调用子窗体内的函数  
window.frames['ifm_id'].valueChange("id_101");  
// 子窗体调用父窗体的函数  
parent.refreshTree("nodeId_202");  

 

6. 弹出窗体与返回值

 

复制代码代码如下:

// 弹出窗体  
var url = "http://www.baidu.com";  
win=window.showModalDialog(url,window,"dialogLeft:400;dialogTop:200;dialogWidth:560px;dialogHeight:380px;scroll:yes;menubar:no;toolbar:no;status:no;");  
// 在弹出窗体中设置返回值  
var result = new Array();  
result[0] = "id_101";  
result[1] = "name_202";  
window.returnValue = result;  
window.close();  

 

7. javascript 作用域[只有全局作用域和函数作用域,javascript没有块作用域]

 

复制代码代码如下:

// 1. 全局作用域  
var id = "global variable";    // 1.1 在函数外部定义的变量  
function showMsg(){      
    message = "global message";// 1.2 未定义而直接赋值的变量  
                               //     在第一次使用时被定义为全局变量  
}  
// 2. 函数作用域  
function doCheck(){  
    var data = "function data";// 2.1 在函数内部定义的变量  
}  

 

8. javascript 继承机制

 

复制代码代码如下:

// 1. 对象冒充继承  
function Person(strName){  
    // private fields  
    var name = strName;  
    // public methods  
    this.getName = function(){  
        return name;  
    };      
}  
function Student(strName,strSchool){  
    // 定义父类的属性及方法      
    this.parent = Person;  
    this.parent(strName);  
    delete this.parent;        // 删除临时变量 parent  
    // 定义新属性及方法      
    // private fields  
    var school = strSchool;  
    // public methods  
    this.getSchool = function(){  
        return school;  
    };       
}  
// 2. Funtion 对象的 call(..) 或 apply(..) 继承  
//    call 和 apply 的区别在于:  
//      call  的第二个参数为可变参数;  
//      apply 的第二个参数为 Array;  
function Animal(strName,intAge){  
    // private fields  
    var name = strName;  
    var age = intAge;  
    // public methods  
    this.getName = function(){  
        return name;  
    };   
    this.getAge = function(){  
        return age;  
    };  
}  
function Cat(strName,intAge,strColor){  
    // 定义父类的属性及方法      
    Animal.call(this,strName,intAge);  
    // Animal.apply(this,new Array(strName,intAge));  
    // 定义新属性及方法      
    // private fields  
    var color = strColor;  
    // public methods  
    this.getInfo = function(){  
        return "name:" + this.getName() + "/n"  
             + "age:" + this.getAge() + "/n"  
             + "color:" + color;  
    };  
}  
// 3. prototype 继承  
//    prototype 声明的属性及方法被所有对象共享  
//    prototype 只有在读属性的时候会用到  
Function.prototype.extend = function(superClass){  
    // 此处的 F 是为了避免子类访问父类中的属性 this.xxx  
    function F(){};  
    F.prototype = superClass.prototype;  
    // 父类构造函数  
    this.superConstructor = superClass;  
    this.superClass = superClass.prototype;  
    this.prototype = new F();  
    this.prototype.constructor = this;  
};  
Function.prototype.mixin = function(props){      
    for (var p in props){          
        this.prototype[p] = props[p];          
    }  
};  
function Box(){}  
Box.prototype = {      
    getText : function(){  
        return this.text;  
    },  
    setText : function(text){  
        this.text = text;  
    }  
};  
function CheckBox(){}  
CheckBox.extend(Box);  
CheckBox.mixin({  
    isChecked : function(){  
        return this.checked;  
    },  
    setChecked : function(checked){  
        this.checked = checked;  
    }  
});  

 

9. call , apply & bind

 

复制代码代码如下:

// thisArg 表示在 fun 内部时 this 所指示的对象  
// call & apply 将立即执行 fun 并返回结果  
var result = fun.call(thisArg,arg1,...);  
var result = fun.apply(thisArg,[argsArray]);  
// thisArg 表示在 fun 内部时 this 所指示的对象  
// bind 返回的是一个匿名函数  
var tmpfun = fun.bind(thisArg);  
var result = tmpfun(arg1,...);  

 

 

复制代码代码如下:

<script type="text/javascript">  
/** 
 * 扩展 Function 的功能 
 */  
Function.prototype.bind = function(obj){  
    var method = this;  
    var tmpfun = function(){  
        return method.apply(obj,arguments);  
    };  
    return tmpfun;  
}  
function Parent(){  
    this.name = "parent";  
}  
function Child(){  
    this.name = "child";  
    this.getName = function(time){  
        return time + " " + this.name;  
    };  
}  
var parent = new Parent();  
var child = new Child();  
alert(child.getName(1));                // show 1 child  
alert(child.getName.call(parent,2));    // show 2 parent [call & apply 会立即执行]  
var tmpfun = child.getName.bind(parent);// bind 不会立即执行  
alert(tmpfun(3));                       // show 3 parent  
</script>  

 

10. js "==" Operator

 

复制代码代码如下:

转换规则  
   如果一个操作数是 Boolean 值,则比较之前将其转成数字:false -> 0, true -> 1;  
   如果一个操作数是数字,另一操作数是字符串,则比较之前将字符串转成数字;  
   如果一个操作数是对象,另一操作数是数字或字符串,则比较之前会将对象转为基本类型,  
       引擎会先尝试调用 valueOf(),如果 valueOf() 没有 override 或返回一个对象,  
       则引擎会尝试调用 toString(),如果 toString() 没有 override 或返回一个对象,则抛出异常;  
   如果是两个对象进行比较,则判断它们是否引用同一对象;  
   如果一个操作数是 NaN, == 将返回 false, != 将返回 true;  
   null 和 undefined 与其它值比较将返回 false,  
       但 null == null, undefined == undefined, null == undefined;  
   参与比较时 null 和 undefined 不能转为其它值;    

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选