javascript - “对象数组”在这里的作用是什么?
问题描述
这里“对象数组”的作用是什么:
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]))
解决方案
该代码旨在了解参数是否为数组。从历史上看,有几种方法可以做到这一点,尽管在现代,该Array.isArray
功能确实使所有这些技巧都过时了。
首先,它确实应该检查“[object Array]”(大写“A”)。我想这是你的问题中的一个错字?
无论如何,这里的窍门是使用全局函数toString
,它是toString
全局对象 ( globalThis.toString
) 的方法。您可能认为您可以调用input.toString()
,但该函数已被 Array 原型覆盖并且不会返回相同的结果。它将数组元素作为逗号分隔的字符串返回。然而,全局toString
函数本质上将执行Object.toString
以下操作:提供格式为“[object type ]”的通用字符串。
通过使用call
我们可以提供应该被字符串化的对象。所以我们得到“[object Array]”,这很好地表明我们有一个数组。
同样,现在首选的方法是调用Array.isArray(input)
.
推荐阅读
- wordpress - 仅检查浏览器 cloudflare 重定向 url 后出现 404 错误
- r - 使用两列边列表创建加权 igraph 网络
- html - 通过电子邮件发送 html 电子邮件模板后,收件箱中未显示图标、字体和图像
- c - 作业,写一个将一串数字转换成整数的函数
- html - 如何修复 htmlspecialchars() 期望参数 1 是字符串,给定数组
- mongodb - 查找聚合中的局部变量不起作用
- python - Python/Requests - 进度条立即完成?
- python - FTX API“缺少参数市场”Python
- e-commerce - Odoo13 Enterprise eLearning 模块:购买的课程未在客户帐户中列出
- php - 我怎样才能在 laravel 上只获得第一个标签关系?