zoukankan      html  css  js  c++  java
  • js判断是否是对象的几种方法

    const obj = { }

    1.toString(推荐)

    Object.prototype.toString.call(obj) === '[object Object]'

    2.constructor

    obj.constructor === Object obj?.constructor === Object

    3.instanceof 需要注意的是由于数组也是对象,因此用 arr instanceof Object 也为true。

    obj instanceof Object

    4.运算符 typeof

    typeof obj === Object
    
    // 根据typeof判断对象也不太准确
    表达式	                      返回值
    typeof undefined	       'undefined'
    typeof null	               'object'
    typeof true	               'boolean'
    typeof 123	               'number'
    typeof "abc"	           'string'
    typeof function() {}	   'function'
    typeof {}	               'object'
    typeof []	               'object'
    

    检测数组类型几种方法

    function isArrayFn (o) {
    return Object.prototype.toString.call(o) === '[object Array]';
    }
    

    Object.prototype.toString的行为:首先,取得对象的一个内部属性[[Class]],然后依据这个属性,返回一个类似于"[object Array]"的字符串作为结果
    (看过ECMA标准的应该都知道,[[]]用来表示语言内部用到的、外部不可直接访问的属性,称为“内部属性”)。
    利用这 个方法,再配合call,我们可以取得任何对象的内部属性[[Class]],然后把类型检测转化为字符串比较,以达到我们的目的。

    2.Array.isArray()
    ECMAScript5将Array.isArray()正式引入JavaScript,目的就是准确地检测一个值是否为数组。IE9+、 Firefox 4+、Safari 5+、Opera 10.5+和Chrome都实现了这个方法。但是在IE8之前的版本是不支持的。

  • 相关阅读:
    洛谷 P2678 跳石头
    洛谷 P1145 约瑟夫
    LibreOJ #515. 「LibreOJ β Round #2」贪心只能过样例
    洛谷 P2966 [USACO09DEC]牛收费路径Cow Toll Paths
    网络编程 --- TCP
    进程
    并发编程
    网络编程 --- UDP
    网络编程
    面向对象编程 --- 反射
  • 原文地址:https://www.cnblogs.com/liaoing/p/14108222.html
Copyright © 2011-2022 走看看