首页 > 编程语言 >[Javascript] Is Array? Symbol.toStringTag

[Javascript] Is Array? Symbol.toStringTag

时间:2024-11-24 20:32:59浏览次数:6  
标签:isArray const Symbol Javascript obj Array prototype

During the past, this was a working solution

function isArray(obj) {
   return Object.prototype.toString.call(obj) === '[object Array]'
}

 

But now it doesn't work anymore, the reason is because ES6 has a built-in Symbol:

const obj = {
   [Symbol.toStringTag]: 'Array'
}
console.log(Object.prototype.toString.call(obj)) // [object Array]

 

There is a second way, people might do is using instanceof Array, which also has its own problem:

function isArray(obj) {
    return obj instanceof Array;
}

const obj = {}
Object.setPrototypeof(obj, Array.prototype)

isArray(obj) // true

 

Also when the page has iframe, the Arrayfrom iframe is different from the Array from window.

const Array1 = window.Array
const frame = document.querySelector('iframe')
const Array2 = frame.contentWindow.Array;
console.log(Array1 === Array2) // false
isArray(Array2) // false, due to the contructor function is different, then the prototype is also different

 

Best way:

Array.isArray(obj) // it's code in C++

 

标签:isArray,const,Symbol,Javascript,obj,Array,prototype
From: https://www.cnblogs.com/Answer1215/p/18566320

相关文章

  • 【JavaScript】关于对象解构赋值
    概念对象解构赋值是JavaScript中的一种语法特性,它提供了一种简洁的方式来从对象中提取属性值,并将这些值赋给变量。这种方式使得代码在处理对象数据时更加直观和高效,避免了传统的通过对象属性访问(如object.property)来逐个获取和赋值的繁琐过程。对象就像是一个装满各种......
  • 第十章 JavaScript的应用
     JavaScript概述与核心特性深度解析在当今的网页开发领域,HTML和CSS技术构建出了信息丰富且样式美观的网页框架,但在交互性方面却存在明显局限。JavaScript的出现恰好弥补了这一短板,作为一种强大的脚本语言,它为网页注入了灵动的交互性与绚丽的特效,极大地提升了用户体验。......
  • 第十章 JavaScript的课后练习
    1.在网页中显示一个工作中的“数字时钟”。<!DOCTYPEhtml><html> <head> <metacharset="utf-8"> <title>数字时钟</title> <styletype="text/css"> div{ font-size:150px; text-align:center; } .div{......
  • 第十章JavaScript的应用
    10.1JavaScript概述10.1.1JavaScript简介         JavaScript是一种基于对象(Object)和事件驱动(EventDriven)并具有安全性能的脚本语言,能够与HTML(超文本标记语言)、Java语言一起在Web页面中与Web客户交互,它无须经过先将数据传给服务器端(Server)、再传回来的过程,而......
  • HTML学生个人网站作业设计:动漫网站设计——樱桃小丸子(6页) HTML+CSS+JavaScript 简单
    一、......
  • 一个基于原生 JavaScript 的简约消息提示插件,非常轻量,不依赖于任何第三方库或框架,使其
    在现代的Web开发中,提供良好的用户反馈是至关重要的。消息提示是其中一种最常见的方式之一,它可以用来向用户传达重要信息、警告或成功状态。然而,为了简化开发者的工作并提供一种轻量级、易于集成的解决方案,Dream-Msg应运而生。Dream-Msg是一个基于原生JavaScript的简约......
  • JavaScript基础简介
    内嵌内嵌JS指的是将JavaScript代码直接写在HTML文件的<script>标签中,通常放在<head>或<body>标签内。这种方式使得JavaScript代码与HTML结构紧密联系在一起,便于在单个HTML文件中进行简单的交互和动态效果实现。代码:效果:外嵌外嵌JS指的是将JavaScript代码写在独立的.js文......
  • 使用 JavaScript 的 XMLHttpRequest 或 Fetch API 发送 HTTP 请求时,GET 请求和 POST
    使用JavaScript的XMLHttpRequest或FetchAPI发送HTTP请求时,GET请求和POST请求处理参数的方式不同,这与HTTP协议的设计有关GET请求的参数特点:GET请求的参数通过URL传递。原因:URL表现方式:GET请求的主要目的是从服务器获取资源。URL是资源的唯一标识,因此GET......
  • C++,Java,Python,Javascript实现二分查找算法
    二分查找算法是一种在有序数组中查找特定元素的搜索算法。它的基本思想是将数组分成两半,通过比较中间元素与目标值来决定是在左半部分还是右半部分继续查找,从而逐步缩小查找范围直到找到目标值或者确定目标值不存在于数组中。下面是使用C++、Java、Python和JavaScript实现二......
  • CF1763C Another Array Problem
    CF1763CAnotherArrayProblem题目大意:有一个数列\(a\),每次操作可以选择两个位置\(i,j(1\lei<j\len)\),然后把所有位置\(k(i\lek\lej)\)的值\(a_k\)变成\(|a_i-a_j|\)。问若干次操作后,序列的和的最大值为多少?思路:序列的和的最大值可以在所有数都等于原序......