zoukankan      html  css  js  c++  java
  • JS判断一个对象是不是数组的几种方式

    错误: typeof()——只能区分原始类型和function,无法区分内置对象类型

     解决:

      1. 判断原型对象: var bool=father.isPrototypeOf(child);

              判断father是不是child的父对象。

      2. 判断构造函数: 

        var bool=child instanceof 构造函数
        判断child是不是用指定的构造函数创建出来的
        instance: 实例: 用构造函数创建出的一个子对象
        实例化: 用new调用构造函数创建一个对象

      问题: 前两个检查不仅检查直接父对象,而且还检查整个原型链。

      解决:

      3. 检查对象的class属性:  和原型链无关

        每个对象中都有一个内部属性class: 记录了对象创建时的类型。一旦创建,不会更改。

        问题1: class不允许用.直接访问

          解决: obj.toString() -> "[object class]"

            其中class可能为: Object Array Date ...

        问题2: 多数内置对象重写了toString方法

          重写的toString方法已经无法返回class

        解决: 临时借用函数:

          函数.call(对象)  -> 对象.函数()

          Object.prototype.toString.call(obj1) -> obj1.toString();

      4. ES5 : Array.isArray(obj)

  • 相关阅读:
    JUC锁框架_AbstractQueuedSynchronizer详细分析
    npm的镜像替换成淘宝
    MHA+keepalived集群环境搭建
    Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
    链表中倒数第k个结点
    调整数组顺序使奇数位于偶数前面
    数值的整数次方
    二进制中1的个数
    矩形覆盖
    OS之进程管理---多线程模型和线程库(POSIX PTread)
  • 原文地址:https://www.cnblogs.com/adolfvicto/p/7490891.html
Copyright © 2011-2022 走看看