javascript知识整理

1.原生cookie操作

/**
 * cookie操作工具.
 * 使用方法:保存值:CookieTool('name','1',{expires: 7})  //表示保存一个cookie值为1,键值为name,失效时间7天以后
 *         取值:CookieTool('name')                    //返回1
 * @param {} name
 * @param {} value
 * @param {} options
 * @return {}
 */
CookieTool = function(name, value, options) {
          if (typeof value != 'undefined') {
                    options = options || {};
                    if (value === null) {
                              value = ''; 
                              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' : '';
                    document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
          } else {
                    var cookieValue = null;
                    if (document.cookie && document.cookie != '') {
                              var cookies = document.cookie.split(';');
                              for (var i = 0; i < cookies.length; i++) {
                                        var cookie = trim(cookies[i]);
                                        if (cookie.substring(0, name.length + 1) == (name + '=')) {
                                                  cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                                                  break;
                                        }
                              }
                    }
                    return cookieValue;
          }
};

2.查看js对象函数

/**
 * 用来查看一个对象的属性
 */
function debugObjectInfo(obj){
        traceObject(obj);
        
        function traceObject(obj){ 
                var str = '';
                if(obj.tagName&&obj.name&&obj.id)
                str="<table border='1' width='100%'><tr><td colspan='2' bgcolor='#ffff99'>traceObject   tag: <"+obj.tagName+">   name = \""+obj.name+"\"   id = \""+obj.id+"\" </td></tr>"; 
                else{
                        str="<table border='1' width='100%'>"; 
                }
                var key=[]; 
                for(var i in obj){ 
                        key.push(i); 
                } 
                key.sort(); 
                for(var i=0;i<key.length;i++){ 
                        var v= new String(obj[key[i]]).replace(/</g,"<").replace(/>/g,">"); 
                        str+="<tr><td valign='top'>"+key[i]+"</td><td>"+v+"</td></tr>"; 
                } 
                str=str+"</table>"; 
                writeMsg(str); 
        } 
        function trace(v){ 
                var str="<table border='1' width='100%'><tr><td bgcolor='#ffff99'>"; 
                str+=String(v).replace(/</g,"<").replace(/>/g,">"); 
                str+="</td></tr></table>"; 
                writeMsg(str); 
        } 
        function writeMsg(s){ 
                traceWin=window.open("","traceWindow","height=600, width=800,scrollbars=yes"); 
                traceWin.document.write(s); 
        } 
}

3.js多重继承

function Class10()
{
    this.showSub = function(a,b)
    {
        alert(a-b);
    }
}

function Class11()
{
    this.showAdd = function(a,b)
    {
        alert(a+b);
    }
}


function Class2()
{
    Class10.call(this);
    Class11.call(this);
}


4.利用apply实现多重继承

function Person(name,age){
    this.name=name;
    this.age=age;
    this.sayhello=function(){alert("hello")};
} 
function Print(){
    this.funcName="Print"; 
    this.show=function(){      
        var msg=[];
        for(var key in this){ 
            if(typeof(this[key])!="function"){
                msg.push([key,":",this[key]].join(""));
            }
        } 
        alert(msg.join(" "));
    };
} 
function Student(name,age,grade,school){
    Person.apply(this,arguments);
    Print.apply(this,arguments);
    this.grade=grade;
    this.school=school;
} 
var p1=new Person("jake",10);
p1.sayhello();
var s1=new Student("tom",13,6,"CKXY");
s1.show();
s1.sayhello();
alert(s1.funcName);

5.使用apply进行数组参数的函数优化

Math.max后面可以接任意个参数,最后返回所有参数中的最大值。

比如 
alert(Math.max(5,8))   //8
alert(Math.max(5,7,9,3,1,6))   //9

但是在很多情况下,我们需要找出数组中最大的元素。
var arr=[5,7,9,1]
alert(Math.max(arr))    // 这样却是不行的。一定要这样写

function getMax(arr){
    var arrLen=arr.length;
    for(var i=0,ret=arr[0];i<arrLen;i++){
        ret=Math.max(ret,arr[i]);       
    }
    return ret;
}

用 apply呢,看代码:
function getMax2(arr){
    return Math.max.apply(null,arr);
}
再比如数组的push方法。
var arr1=[1,3,4];
var arr2=[3,4,5];
如果我们要把 arr2展开,然后一个一个追加到arr1中去,最后让arr1=[1,3,4,3,4,5]
arr1.push(arr2)显然是不行的。 因为这样做会得到[1,3,4,[3,4,5]]

我们只能用一个循环去一个一个的push(当然也可以用arr1.concat(arr2),但是concat方法并不改变arr1本身)
var arrLen=arr2.length
for(var i=0;i<arrLen;i++){
    arr1.push(arr2[i]);
}
使用apply:
Array.prototype.push.apply(arr1,arr2)  




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值