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

    1 var toString = Object.prototype.toString;
    2 
    3 console.log(toString.call({}));  // [object Object]
    4 console.log(toString.call([]));  // [object Array]

    1.instanceof操作符

    只有一个全局作用域的情况下:

    let a = []
    let o = {}
    console.log(a instanceof Array)    // true
    console.log(o instanceof Array)    // false

    问题:如果页面中有多个框架,可能有两个不同版本的Array构造函数。如果要把数组从一个框架传给另一个框架,则这个数组的构造函数将有别于在第二个框架内本地创建的数组。

    2.Array.isArray

    let a = []
    let o = {}
    console.log(Array.isArray(a))    // true
    console.log(Array.isArray(o))    // false

    这个方法的目的就是确定一个值是否为数组,而不用管它是在哪个全局执行上下文中创建的

    3.toString()

    可以使用Object原型对象上的toString()方法判断一个对象的类型。

    toString()方法被每个Object对象继承。如果在自定义对象中没有被重写,将会返回"[object type]",其中type是对象的类型

    由于数组中将Object对象的toString()对象重写了,所以需要直接调用Object对象toString()方法,这里就需要用到call或者apply,然后把当前的调用方法的对象传入

    1 var toString = Object.prototype.toString;
    2 
    3 console.log(toString.call({}));  // [object Object]
    4 console.log(toString.call([]));  // [object Array]

     

  • 相关阅读:
    软件研发:公司内部技术考试——算法编程题程序框架
    软件研发:公司内部技术考试——答题方法
    JConsole & JVisualVM远程监视Websphere服务器JVM的配置方法
    java.sql.SQLException: ORA-01578: ORACLE 数据块损坏问题解决办法
    ORA-00001: unique constraint (...) violated并不一定是数据冲突
    Linux部署Web应用程序超链接下载中文名称文件404问题解决办法
    Windows平台使用RMAN命令自动删除Oracle过期归档日志的方法
    Oracle调整内存超出限制出现ORA-27100: shared memory realm already exists问题解决办法
    linux下查看最消耗CPU、内存的进程
    RMAN正确地删除Archivelog以及设置有备库的归档删除策略
  • 原文地址:https://www.cnblogs.com/codexlx/p/14280516.html
Copyright © 2011-2022 走看看