• js 判断确切判断Array和Object


     js的数组其实是特殊的对象。

    这就导致:

      typeof [1,2,3] === 'object'

      [1,2,3] instanceof Object  和 [1,2,3] instanceof Array 都是true

    但是注意 [1,2,3]  !=  {'0':1,'1':2,'2':3}, [1,2,3] != [1,2,3] 。因为对象之间的 == 与 ===是一样的。

    那么要确切判断的话,经过我试验,可以使用以下规则:

     [].__proto__ === Array.prototype

    {}.__proto__ === Object.prototype

    附带2个对象深拷贝方法。工程里的copy1和我写的copy2.当然copy2 在规模大点的时候,效率比copy1要高。

    function copy1(obj){
         var o;
        if (obj == null || obj == undefined || typeof obj != 'object'){
            o = obj;
        }
        else{
            var s = JSON.stringify(obj);
            o = JSON.parse(s);
        }
        return o;
    }
    function copy2(obj){
        var re;
        if(obj.__proto__ === Object.prototype ){
            re = {};
            for(var key in obj){
                re[key] = copy2(obj[key]);
            }
        }else if(obj.__proto__ === Array.prototype){
            re = Array(obj.length);
            for(var i = 0;i < re.length;i++){
                re[i] = obj[i];
            }
        
        }else{
            re = obj;
        }
        return re;
    }
  • 相关阅读:
    HDU 3507 PrintArticle (单调队列优化)
    BZOJ 1911 (特别行动队)
    POJ 3709 K-Anonymous Sequence (单调队列优化)
    邓_php面试【002】——完整版
    邓_正则表达式
    邓_PHP面试2
    邓_PHP面试【001】
    网站大全
    Jquery 获取对象的几种方式介绍
    邓_Jquery测试题
  • 原文地址:https://www.cnblogs.com/pixs-union/p/7373228.html
Copyright © 2020-2023  润新知