首页 > 解决方案 > “对象数组”在这里的作用是什么?

问题描述

这里“对象数组”的作用是什么:

var  is_array = function(input){
    if(toString.call(input)==="[object array]")//what is role of "object array" here?
       return true   
    return false
}
console.log(is_array('welcome'))
console.log(is_array([1,2,3,4,5]))

标签: javascript

解决方案


该代码旨在了解参数是否为数组。从历史上看,有几种方法可以做到这一点,尽管在现代,该Array.isArray功能确实使所有这些技巧都过时了。

首先,它确实应该检查“[object Array]”(大写“A”)。我想这是你的问题中的一个错字?

无论如何,这里的窍门是使用全局函数toString,它是toString全局对象 ( globalThis.toString) 的方法。您可能认为您可以调用input.toString(),但该函数已被 Array 原型覆盖并且不会返回相同的结果。它将数组元素作为逗号分隔的字符串返回。然而,全局toString函数本质上将执行Object.toString以下操作:提供格式为“[object type ]”的通用字符串。

通过使用call我们可以提供应该被字符串化的对象。所以我们得到“[object Array]”,这很好地表明我们有一个数组。

同样,现在首选的方法是调用Array.isArray(input).


推荐阅读