常用的前端JavaScript方法封装

Posted coderkey

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了常用的前端JavaScript方法封装相关的知识,希望对你有一定的参考价值。

1、输入一个值,返回其数据类型

function type(para) 
    return Object.prototype.toString.call(para)

2、数组去重

function unique1(arr) 
    return [...new Set(arr)]


function unique2(arr) 
    var obj = ;
    return arr.filter(ele => 
        if (!obj[ele]) 
            obj[ele] = true;
            return true;
        
    )


function unique3(arr) 
    var result = [];
    arr.forEach(ele => 
        if (result.indexOf(ele) == -1) 
            result.push(ele)
        
    )
    return result;

3、字符串去重

String.prototype.unique = function () 
    var obj = ,
        str = '',
        len = this.length;
    for (var i = 0; i < len; i++) 
        if (!obj[this[i]]) 
            str += this[i];
            obj[this[i]] = true;
        
    
    return str;


###### //去除连续的字符串 
function uniq(str) 
    return str.replace(/(\\w)\\1+/g, '$1')

4、深拷贝 浅拷贝

//深克隆(深克隆不考虑函数)
function deepClone(obj, result) 
    var result = result || ;
    for (var prop in obj) 
        if (obj.hasOwnProperty(prop)) 
            if (typeof obj[prop] == 'object' && obj[prop] !== null) 
                // 引用值(obj/array)且不为null
                if (Object.prototype.toString.call(obj[prop]) == '[object Object]') 
                    // 对象
                    result[prop] = ;
                 else 
                    // 数组
                    result[prop] = [];
                
                deepClone(obj[prop], result[prop])
     else 
        // 原始值或func
        result[prop] = obj[prop]
    
  

return result;


// 深浅克隆是针对引用值
function deepClone(target) 
    if (typeof (target) !== 'object') 
        return target;
    
    var result;
    if (Object.prototype.toString.call(target) == '[object Array]') 
        // 数组
        result = []
     else 
        // 对象
        result = ;
    
    for (var prop in target) 
        if (target.hasOwnProperty(prop)) 
            result[prop] = deepClone(target[prop])
        
    
    return result;

// 无法复制函数
var o1 = jsON.parse(jsON.stringify(obj1));

5、reverse底层原理和扩展

// 改变原数组
Array.prototype.myReverse = function () 
    var len = this.length;
    for (var i = 0; i < len; i++) 
        var temp = this[i];
        this[i] = this[len - 1 - i];
        this[len - 1 - i] = temp;
    
    return this;

6、圣杯模式的继承

function inherit(Target, Origin) 
    function F() ;
    F.prototype = Origin.prototype;
    Target.prototype = new F();
    Target.prototype.constructor = Target;
    // 最终的原型指向
    Target.prop.uber = Origin.prototype;

7、找出字符串中第一次只出现一次的字母

String.prototype.firstAppear = function () 
    var obj = ,
        len = this.length;
    for (var i = 0; i < len; i++) 
        if (obj[this[i]]) 
            obj[this[i]]++;
         else 
            obj[this[i]] = 1;
        
    
    for (var prop in obj) 
       if (obj[prop] == 1) 
         return prop;
       
    

8、找元素的第n级父元素

function parents(ele, n) 
    while (ele && n) 
        ele = ele.parentElement ? ele.parentElement : ele.parentNode;
        n--;
    
    return ele;

9、 返回元素的第n个兄弟节点

function retSibling(e, n) 
    while (e && n) 
        if (n > 0) 
            if (e.nextElementSibling) 
                e = e.nextElementSibling;
             else 
                for (e = e.nextSibling; e && e.nodeType !== 1; e = e.nextSibling);
            
            n--;
         else 
            if (e.previousElementSibling) 
                e = e.previousElementSibling;
             else 
                for (e = e.previousElementSibling; e && e.nodeType !== 1; e = e.previousElementSibling);
            
            n++;
        
    
    return e;

10、封装mychildren,解决浏览器的兼容问题

function myChildren(e) 
    var children = e.childNodes,
        arr = [],
        len = children.length;
    for (var i = 0; i < len; i++) 
        if (children[i].nodeType === 1) 
            arr.push(children[i])
        
    
    return arr;

以上是关于常用的前端JavaScript方法封装的主要内容,如果未能解决你的问题,请参考以下文章

常用的前端JavaScript方法封装

常用的前端JavaScript方法封装

常用的前端JavaScript方法封装

前端学习笔记JavaScript 常用方法兼容性封装

33个前端常用的JavaScript函数封装方法

前端Util.js-ES6实现的常用100多个javaScript简短函数封装合集(持续更新中)