zoukankan      html  css  js  c++  java
  • 判断一个对象是不是数组

    var arr=[1,2,3]; //Array.prototype

    var obj={}; //Object.prototype

    var fun=function(){}; //Function.prototype

    /*typeof无法区分普通对象和数组*/

        console.log(typeof arr); //object 判断失败

    1./*isPrototypeOf():判断数组类型的原型是不是arr的父级对象*/

    if(Array.prototype.isPrototypeOf(arr)){

    console.log("arr是数组");

    }

    2./*instanceof判断arr是否由数组类型创建出来*/

    if(arr instanceof Array){

    console.log("arr是数组");

    }

    3./*getPrototypeOf:判断arr的父级对象是不是数组类型的原型*/

    if(Object.getPrototypeOf(arr)==Array.prototype){

    console.log("arr是数组");

    }

    4./*调用Object的原型中的原生toString输出对象的类型名*/

    console.log(Object.prototype.toString.call(arr));

    在toString方法被调用时,会执行下面的操作步骤:

    1 如果this的值为undefined,则返回"[object Undefined]".
    2 如果this的值为null,则返回"[object Null]".
    3 让O成为调用ToObject(this)的结果.
    4 让class成为O的内部属性[[Class]]的值.
    5 返回三个字符串"[object ", class, 以及 "]"连接后的新字符串.

    最后的最后提醒大家,Object.prototype.toString().call(param)返回的[object class]中class首字母是大写,像JSON这种甚至都是大写,所以,大家判断的时候可以都转换成小写,以防出错,Object.prototype.toString().call(param).toLowerCase()即可。

    constructor 属性。 JavaScript中,每个对象都有一个constructor属性,它引用了初始化该对象的构造函数,常用于判断未知对象的类型。如给定一个求知的值 通过typeof运算符来判断它是原始的值还是对象。如果是对象,就可以使用constructor属性来判断其类型。

    5.if(typeof arr=="object"&&arr.constructor==Array){

    console.log("是数组";)//注意:typeof返回字符串,所以是“object”  constructor返回构造器

    }

  • 相关阅读:
    2019 安装SSDT
    添加删除服务
    POWER BI 报表服务器搭建配置
    解决POWER BI权限控制问题
    asp.net core 发布后显示异常错误信息的方法
    Microsoft SQL Server 查询连接数和关闭连接数
    不能在此路径中使用此配置节。如果在父级别上锁定了该节,便会出现这种情况
    SQL Server在所有表中查找内容(在整个库搜索内容)
    IIS 在.NET MVC网站下创建多个子应用程序,子站访问根目录问题
    博客网址
  • 原文地址:https://www.cnblogs.com/12606huchao/p/4964748.html
Copyright © 2011-2022 走看看