首页 > 试题广场 >

下面哪些方式在同一个窗口下能够检测一个js对象是数组类型?(

[不定项选择题]
下面哪些方式在同一个窗口下能够检测一个js对象是数组类型?(      )
  • Array.isArray()
  • instanceof
  • typeof
  • Object.prototype.toString.call()
正确答案:A、B、D
A:Array 为 js 的原生对象,它有一个静态方法:Array.isArray(),能判断参数是否为数组
B:instanceof 运算符返回一个布尔值,表示对象是否为某个构造函数的实例(题目中 instance of , emem)
C: typeof 能判断类型有:number、string、boolean、symbol、undefined、function;   object、array、null 的变量都返回 object
D:Object.prototype.toString() 为 Object 对象的实例方法,默认情况下(即不重写该方法),返回参数的类型字符串。

发表于 2019-08-29 20:50:27 回复(10)

本人对于做过的面试题全部进行了梳理解析,分享给大家.这是JS部分,需要的可以看看:JavaScript专项练习

  1. A选项没啥好说的,原生支持的方法图片说明

  2. B选项 instanceof 运算符返回一个布尔值,表示对象是否为某个构造函数的实例,这时可能就有同学要提出疑问了:

    • 我用这个方法,似乎无法分辨数组与对象的区别啊, arr instanceof Array/Object 似乎都会返回 true !这不是不严谨吗?
    • 注意审题:检测一个JS对象是数组类型,既定的事实是我们当前是一个对象,然后要判断它是否为数组,不懂直接看图解
      图片说明
  3. C选项 typeof 能判断类型有:number、string、boolean、symbol、undefined、function;

    object、array、null的变量都返回 object,所以错

  4. D选项直接上图
    图片说明

编辑于 2021-10-25 13:15:29 回复(1)
AD.
A没什么解释的,原生支持的方法。
D,Object.prototype.toString.call()判断类型是很准确的,后直接使用slice(8,-1)直接取出类型很准确
发表于 2019-08-04 08:35:20 回复(7)
b是个说的不严谨叭。 [1,2] instanceof Object //true。 a instanceof b 。他只是表示b是否在a的原型链上。
发表于 2021-09-03 17:26:46 回复(0)
B选项在做服务端渲染的时候有可能是两个不同的context,如果不在同一个窗口下或者context下,比如把context1中创建的一个数组,传到context2中进行instanceof Array返回的是false
发表于 2021-03-19 02:53:32 回复(0)
D选项应该是错误的
发表于 2019-11-20 22:42:41 回复(0)
使用继承Array的构造器创建对象,它不是数组创建的。
使用instanceof去判断结果是true。
使用Array.isArray和Object.prototype.toString.call()的结果是false。
我觉得正确答案不太准确吧。

编辑于 2020-04-17 17:01:17 回复(0)
数组重写了object的tostring函数
发表于 2019-08-16 08:54:33 回复(0)
D 选项  JQuery、Vue、React源码里都是Object.prototype.toString.call(),求解答?
发表于 2019-08-03 20:42:42 回复(3)
正确答案:A、B、D
A:Array 为 js 的原生对象,它有一个静态方法:Array.isArray(),能判断参数是否为数组
B:instanceof 运算符返回一个布尔值,表示对象是否为某个构造函数的实例(题目中 instance of , emem)
C: typeof 能判断类型有:number、string、boolean、symbol、undefined、function;   object、array、null 的变量都返回 object
D:Object.prototype.toString() 为 Object 对象的实例方法,默认情况下(即不重写该方法),返回参数的类型字符串。

发表于 2021-11-19 19:41:42 回复(0)

D 也不靠谱呀😅 ,看来真正坚挺的只有 A
编辑于 2021-11-05 22:36:05 回复(0)

注意审题,数组是array!不是number, array是复杂数据类型,对应的方法是instanceof

发表于 2020-02-25 09:54:09 回复(0)
typeof不能的原因是: typeof会将object, array和null都返回为object
发表于 2023-04-08 10:09:26 回复(0)
使用 typeof 操作符来检测变量的数据类型。

返回值

undefined (一个没有设置值的变量)
boolean 布尔型
string 字符串类型
number 数字类型(NaN的数据类型是number)
object 对象类型(注:null是一个只有一个值的特殊类型,用typeof检测null返回是object;使用typeof检测数组返回亦是object)
function 函数类型
symbol(es6) 一种基础数据类型(symbol是由ES6规范引入的一项新特性,它的功能类似于一种标识唯一性的ID)
发表于 2022-08-28 17:17:41 回复(0)
typeof arr 返回的是Object
发表于 2021-09-09 11:43:01 回复(0)
typeof 对数组使用,得到的时"object"
发表于 2021-04-29 14:55:58 回复(0)
题目中说同一个窗口下,所以B可以吧
发表于 2020-07-22 18:49:05 回复(0)
发表于 2020-04-09 15:39:45 回复(1)
刚刚看到一题上面说,
instanceof :当有多个不同全局变量的时候不能准确的判断
在这一题又是对的,纠结
发表于 2020-04-09 10:14:24 回复(2)
判断数据类型的时候,isArray可以判断出数据类型,原生的判断方法;instanceof可以检测某一个数据是否是另一个数据类型的实例;typeof只能返回js数组中最基本的数据类型,对于array和function一律返回的数据类型为object.
发表于 2020-03-22 09:27:27 回复(1)