JS中,objectarraymapset等底层数据结构是:1、object——对象;2、array——数组;3、map——地图;4、set——集合;5、其他。object 数据结构是一种用于存储键值对的基本数据类型,它是 JavaScript 中最常用的数据结构之一,可以用来表示各种实体、属性和方法等。
一、JS中objectarraymapset等底层数据结构是什么
1、object——对象
Object 是 JavaScript 的一种数据类型。它用于存储各种键值集合和更复杂的实体。Objects 可以通过 Object() 构造函数或者使用对象字面量的方式创建。
在 JavaScript 中,几乎所有的对象都是 Object 类型的实例,它们都会从 Object.prototype 继承属性和方法,虽然大部分属性都会被覆盖(shadowed)或者说被重写了(overridden)。 除此之外,Object 还可以被故意的创建,但是这个对象并不是一个“真正的对象”(例如:通过 Object.create(null)),或者通过一些手段改变对象,使其不再是一个“真正的对象”(比如说:Object.setPrototypeOf)。
通过原型链,所有的 object 都能观察到 Object 原型对象(Object prototype object)的改变,除非这些受到改变影响的属性和方法沿着原型链被进一步的重写。尽管有潜在的危险,但这为覆盖或扩展对象的行为提供了一个非常强大的机制。
Object 构造函数为给定的参数创建一个包装类对象(object wrapper),具体有以下情况:
- 如果给定值是 null 或 undefined,将会创建并返回一个空对象
- 如果传进去的是一个基本类型的值,则会构造其包装类型的对象
- 如果传进去的是引用类型的值,仍然会返回这个值,经他们复制的变量保有和源对象相同的引用地址
当以非构造函数形式被调用时,Object 的行为等同于 new Object()。
2、array——数组
与其他编程语言中的数组一样,Array 对象支持在单个变量名下存储多个元素,并具有执行常见数组操作的成员。
在 JavaScript 中,数组不是基本类型,而是具有以下核心特征的 Array 对象:
- JavaScript 数组是可调整大小的,并且可以包含不同的数据类型。(当不需要这些特征时,可以使用类型化数组。)
- JavaScript 数组不是关联数组,因此,不能使用任意字符串作为索引访问数组元素,但必须使用非负整数(或它们各自的字符串形式)作为索引访问。
- JavaScript 数组的索引从 0 开始:数组的名列前茅个元素在索引 0 处,第二个在索引 1 处,以此类推,最后一个元素是数组的 length 属性减去 1 的值。
- JavaScript 数组复制操作创建浅拷贝。(所有 JavaScript 对象的标准内置复制操作都会创建浅拷贝,而不是深拷贝)。
3、map——地图
Map 对象保存键值对,并且能够记住键的原始插入顺序。任何值(对象或者基本类型)都可以作为一个键或一个值。
Map 对象是键值对的集合。Map 中的一个键只能出现一次;它在 Map 的集合中是独一无二的。Map 对象按键值对迭代——一个 for…of 循环在每次迭代后会返回一个形式为 [key,value] 的数组。迭代按插入顺序进行,即键值对按 set() 方法首次插入到集合中的顺序(也就是说,当调用 set() 时,map 中没有具有相同值的键)进行迭代。
规范要求 map 实现“平均访问时间与集合中的元素数量呈次线性关系”。因此,它可以在内部表示为哈希表(使用 O(1) 查找)、搜索树(使用 O(log(N)) 查找)或任何其他数据结构,只要复杂度小于 O(N)。
4、set——集合
Set 对象允许你存储任何类型的少数值,无论是原始值或者是对象引用。
Set 对象是值的集合,你可以按照插入的顺序迭代它的元素。Set 中的元素只会出现一次,即 Set 中的元素是少数的。
5、其他
除了object、array、map、set,JavaScript 的底层数据结构还包括:
- 基本数据类型:Undefined、Null、Boolean、Number、String、Symbol和 BigInt。
- WeakMap 和 WeakSet :WeakMap 和 WeakSet 是一些与 Map 和 Set 对象相似的集合类型,但是它们中的键或值只能是弱引用,当没有访问者或引用时,垃圾回收器将自动回收这些对象所占有的内存。
- 其他数据结构类型:队列、堆、栈等。
二、JavaScript编程语言
1、简介
JavaScript 编程语言允许你在 Web 页面上实现复杂的功能。如果你看到一个网页不仅仅显示静态的信息,而是显示依时间更新的内容,或者交互式地图,或者 2D/3D 动画图像,或者滚动的视频播放器,等等——你基本可以确定,这需要 JavaScript 的参与。
JavaScript 是一种脚本,一门编程语言,它可以在网页上实现复杂的功能,网页展现给你的不再是简单的静态信息,而是实时的内容更新,交互式的地图,2D/3D 动画,滚动播放的视频等等。JavaScript 怎能缺席。它是标准 Web 技术蛋糕的第三层:
- HTML:是一种标记语言,用来结构化我们的网页内容并赋予内容含义,例如定义段落、标题和数据表,或在页面中嵌入图片和视频。
- CSS:是一种样式规则语言,可将样式应用于 HTML 内容,例如设置背景颜色和字体,在多个列中布局内容。
- JavaScript:是一种脚本语言,可以用来创建动态更新的内容,控制多媒体,制作图像动画,还有很多。(好吧,虽然它不是使用广泛的,但可以通过简短的代码来实现神奇的功能。)
这三层依次建立,秩序井然。
2、作用
客户端(client-side)JavaScript 语言的核心包含一些普遍的编程特性,以让你可以做到如下的事情:
- 在变量中储存有用的值:比如我们请求客户输入一个新名字,然后将其储存到 name 变量中。
- 操作一段文本(在编程中称为“字符串”(string)):我们取字符串 “玩家 1:”,然后把它和 name 变量连结起来,创造出完整的文本标签,比如:”玩家 1:小明”。
- 运行代码以响应网页中发生的特定事件:我们用一个 click 事件来检测按钮什么时候被点击,然后运行代码更新文本标签。
延伸阅读1:JavaScript的优势
- 不需要编译器,因为web浏览器使用HTML解释它;
- 比其他编程语言更容易学习;
- 错误更容易发现,因此更容易纠正;
- 可以分配给特定的网页元素或特定的事件,如单击或鼠标悬停;
- 可以跨多个浏览器、平台等工作;
- 可以使用JavaScript验证输入并减少手动数据检查的需要;
- 使网站更具互动性,吸引访问者的注意力;
- 比其他编程语言更快、更轻量级。