js基本操作小类库

function addEvent(obj,type,fn){
    if(obj.addEventListener){
        obj.addEventListener(type,fn,false);
    }else if(obj.attachEvent){
        obj.attachEvent('on'+type,function(){
            fn.call(this);
        });
    }
}

function removeEvent(obj,type,fn){
    if(obj.removeEventListener){
        obj.removeEventListener(type,fn,false);
    }else if(obj.detachEvent){
        obj.detachEvent('on'+type,fn);
    }
}

function preDef(evt){
    var e = evt || window.event;
    if(e.preventDefault){
        e.preventDefault();
    }else{
        e.returnValue = false;
    }
}

//跨浏览器获取目标对象
function getTarget(evt){
    if(evt.target){
        return evt.target;
    }else if(window.event.srcElement){
        return window.event.srcElement;
    }
}

//跨浏览器获取字符编码
function getCharCode(evt){
    var e = evt || window.event;
    if(typeof e.charCode == 'number'){
        return e.charCode;
    }else{
        return e.keyCode;
    }
}


//inherit()返回了一个继承自原型对象p的属性的新对象
//这里使用ECMAScript 5 中的Object.create()函数(如果存在的话)
//如果不存在Object.create(),则退化使用其他方法;
function inherit(p){
if(p == null) throw TypeError();    //p是一个对象,但不能是null
if(Object.create){     //如果Object.create()存在
return Object.create(p);     //直接使用它
}
var t = typeof p;     //否则进行进一步检测
if(t !== 'object' && t != 'function') throw TypeError();
function f(){};     //定义一个空构造函数
f.prototype = p;     //将其原型属性设置为p
return new f();
}
原文地址:https://www.cnblogs.com/oceanden/p/3937848.html