js 函数 杂

扩展浏览器原生对象原型用:

function extend(target,source){
    var toString = Object.prototype.toString,
    hasOwn = Object.prototype.hasOwnProperty,back = {};
    if(toString.call(source) !== '[object Object]'){
        return;
    }
    for(var ind in source){
        if(hasOwn.call(source,ind) && typeof source[ind] === 'function'){
            if (!target[ind]) {
                target[ind] = source[ind];
            }else{
                back[ind] = source[ind];
            };
        }
    }
    return back;
}

extend(Array.prototype,{
    
});

事件是否支持检查:

eventSupport(eventName,el){
    el = el || document.documentElement;
    eventName = 'on'+eventName;
    var ret = eventName in el;
    if(el.setAttribute && !ret){
        el.setAttribute(eventName,'return ;');
        ret = typeof el[eventName] === 'function';
        el.removeAttribute(eventName);
    }
    el = null;
    return ret;
}

搞定css私有前缀:

var prefixes = ['','-webkit-','-o-','-moz-','-ms-'];
var cssMap = {
    'float':support('cssFloat')? 'cssFloat':'styleFloat',
    'background':'backgroundColor'
}
function camelize(target){
    if(target.indexOf('-') < 0 && target.indexOf('_') < 0){
        return target;
    }
    return target.replace(/[-_][^-_]/g,function(match){
        return match.charAt(1).toUpperCase();
    });
}
function cssName(name,host,camelCase){
    if(cssMap[name]){
        return cssMap[name];
    }
    host = host || document.documentElement;
    for(var i = 0, n = prefixes.length; i < n; i++){
        camelCase = camelize(prefixes[i]+name);
        if(camelCase in host){
            return (cssMap[name] = camelCase);
        }
    }
    return null;
}
原文地址:https://www.cnblogs.com/cyITtech/p/3763084.html