JS中objectarraymapset等底层数据结构是什么?
一、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验证输入并减少手动数据检查的需要;使网站更具互动性,吸引访问者的注意力;比其他编程语言更快、更轻量级。相关推荐HOT
更多>>内网与外网有哪些区别?
一、内网与外网的区别1、IP地址设置不同一般内网有自己的IP号段,也不会和互联网号段冲突,内网就是从路由器以下开始的,而且IP都是以192开头的...详情>>
2023-10-14 23:33:06研发管理的目标是什么?
一、研发管理的目标研发管理的目标是是提高效能,效能应该分为两个方面,一个是提升质量,一个是提升效率。提升质量是肉眼可见的,但是提升效率...详情>>
2023-10-14 22:12:13需求管理主要涉及哪些内容和方法?
一、需求管理主要涉及内容和方法1. 在时间上重新规划企业的供应流程,以充分满足客户的需要推迟制造是供应链管理中实现客户化的重要形式,其核...详情>>
2023-10-14 20:14:34大整数类型和一般的整数类型相比各有什么优劣?
一、大整数类型和一般的整数类型相比大整数类型和一般的整数类型相比优点是不会溢出,能表示任意长度的数字做各种精度的运算。缺点是没有直接的...详情>>
2023-10-14 16:13:56