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)

  • 相关阅读:
    【Gitbook】实用配置及插件介绍
    【Git】学习记录
    【Ubuntu】使用记录
    intellij idea
    【应用】信息短时存储
    leetcode pow(x,n)实现
    SSM框架-----------SpringMVC+Spring+Mybatis框架整合详细教程
    《平凡的世界》之我看
    垃圾收集器与内存分配策略(三)
    垃圾收集器与内存分配策略(二)
  • 原文地址:https://www.cnblogs.com/adolfvicto/p/7490891.html
Copyright © 2011-2022 走看看