JavaScript
文章平均质量分 65
阑珊灯火
这个作者很懒,什么都没留下…
展开
-
JavaScript之WeakMap
weakMap介绍基本API弱键不可迭代键使用弱映射1.私有变量2.DOM节点元数据ECMAScript 6新增的“弱映射”(WeakMap)是一种新的集合类型,为这门语言带来了增强的键/值对存储机制。WeakMap是Map的“兄弟”类型,其API也是Map的子集。WeakMap中的“weak”(弱),描述的是JavaScript垃圾回收程序对待“弱映射”中键的方式。基本API可以使用new关键字实例化一个空的WeakMap:const wm = new WeakMap();弱映射中的键只能是原创 2021-03-23 21:57:07 · 12587 阅读 · 0 评论 -
JavaScript映射选择:Object VS Map
选择Object还是Map?对于多数Web开发任务来说,选择Object还是Map只是个人偏好问题,影响不大。不过,对于在乎内存和性能的开发者来说,对象和映射之间确实存在显著的差别。1.内存占用Object和Map的工程级实现在不同浏览器间存在明显差异,但存储单个键/值对所占用的内存数量都会随键的数量线性增加。批量添加或删除键/值对则取决于各浏览器对该类型内存分配的工程实现。不同浏览器的情况不同,但给定固定大小的内存,Map大约可以比Object多存储50%的键/值对。2.插入性能向Object和原创 2021-03-22 14:07:25 · 313 阅读 · 0 评论 -
JavaScript映射map与迭代
创建映射使用new关键字和Map构造函数可以创建一个空映射:const m = new Map();如果想在创建的同时初始化实例,可以给Map构造函数传入一个可迭代对象,需要包含键/值对数组。可迭代对象中的每个键/值对都会按照迭代顺序插入到新映射实例中:// 使用嵌套数组初始化映射const m1 = new Map([ ["key1", "val1"], ["key2", "val2"], ["key3", "val3"]]);alert(m1.size); // 3// 使原创 2021-03-22 14:01:03 · 1632 阅读 · 0 评论 -
JavaScript定型数组详解
定型数组的创建定型数组是另一种形式的ArrayBuffer视图。虽然概念上与DataView接近,但定型数组的区别在于,它特定于一种ElementType且遵循系统原生的字节序。相应地,定型数组提供了适用面更广的API和更高的性能。设计定型数组的目的就是提高与WebGL等原生库交换二进制数据的效率。由于定型数组的二进制表示对操作系统而言是一种容易使用的格式,JavaScript引擎可以重度优化算术运算、按位运算和其他对定型数组的常见操作,因此使用它们速度极快。创建定型数组的方式包括读取已有的缓冲、使用原创 2021-03-21 19:18:17 · 2295 阅读 · 1 评论 -
ArrayBuffer详解
ArrayBuffer详解ArrayBuffer是所有定型数组及视图引用的基本单位。Float32Array实际上是一种“视图”,可以允许JavaScript运行时访问一块名为ArrayBuffer的预分配内存。注意 SharedArrayBuffer是ArrayBuffer的一个变体,可以无须复制就在执行上下文间传递它。ArrayBuffer()是一个普通的JavaScript构造函数,可用于在内存中分配特定数量的字节空间。const buf = new ArrayBuffer(16); //原创 2021-03-21 19:00:56 · 22770 阅读 · 0 评论 -
JavaScript迭代与归并方法大全
一、迭代方法ECMAScript为数组定义了5个迭代方法。每个方法接收两个参数:以每一项为参数运行的函数,以及可选的作为函数运行上下文的作用域对象(影响函数中this的值)。传给每个方法的函数接收3个参数:数组元素、元素索引和数组本身。因具体方法而异,这个函数的执行结果可能会也可能不会影响方法的返回值。数组的5个迭代方法如下:❑ every():对数组每一项都运行传入的函数,如果对每一项函数都返回true,则这个方法返回true。❑ filter():对数组每一项都运行传入的函数,函数返回true原创 2021-03-20 15:32:48 · 280 阅读 · 0 评论 -
JavaScript索引之indexof()、find()、findIndex()
ECMAScript提供两类搜索数组的方法:按严格相等搜索和按断言函数搜索。1.严格相等ECMAScript提供了3个严格相等的搜索方法:indexOf()、lastIndexOf()和includes()。其中,前两个方法在所有版本中都可用,而第三个方法是ECMAScript 7新增的。这些方法都接收两个参数:要查找的元素和一个可选的起始搜索位置。indexOf()和includes()方法从数组前头(第一项)开始向后搜索,而lastIndexOf()从数组末尾(最后一项)开始向前搜索。index原创 2021-03-20 15:19:14 · 585 阅读 · 0 评论 -
JavaScript数组操作方法之concat()与slice()、splice()方法
一、concat()方法对于数组中的元素,我们有很多操作方法。比如,concat()方法可以在现有数组全部元素基础上创建一个新数组。它首先会创建一个当前数组的副本,然后再把它的参数添加到副本末尾,最后返回这个新构建的数组。如果传入一个或多个数组,则concat()会把这些数组的每一项都添加到结果数组。如果参数不是数组,则直接把它们添加到结果数组末尾。来看下面的例子:let colors = ["red", "green", "blue"];let colors2 = colors.concat("y原创 2021-03-20 15:07:21 · 496 阅读 · 0 评论 -
JavaScript之空位数组
使用数组字面量初始化数组时,可以使用一串逗号来创建空位(hole)。ECMAScript会将逗号之间相应索引位置的值当成空位,ES6规范重新定义了该如何处理这些空位。可以像下面这样创建一个空位数组:const options = [,,,,,]; // 创建包含5 个元素的数组console.log(options.length); // 5console.log(options); // [,,,,,]const options = [1, , , ,5];//原创 2021-03-19 19:49:35 · 347 阅读 · 0 评论 -
JavaScript排序之sort()与reverse()方法
一、reverse()方法reverse()方法就是将数组元素反向排列。比如:let values = [1, 2, 3, 4, 5];values.reverse();alert(values); // 5,4,3,2,1默认情况下,sort()会按照升序重新排列数组元素,即最小的值在前面,最大的值在后面。为此,sort()会在每一项上调用String()转型函数,然后比较字符串来决定顺序。即使数组的元素都是数值,也会先把数组转换为字符串再比较、排序。比如:let values =原创 2021-03-19 19:41:43 · 2325 阅读 · 0 评论 -
JavaScript栈与队列
一、栈方法ECMAScript给数组提供几个方法,让它看起来像是另外一种数据结构。数组对象可以像栈一样,也就是一种限制插入和删除项的数据结构。栈是一种后进先出(LIFO, Last-In-First-Out)的结构,也就是最近添加的项先被删除。数据项的插入(称为推入,push)和删除(称为弹出,pop)只在栈的一个地方发生,即栈顶。ECMAScript数组提供了push()和pop()方法,以实现类似栈的行为。push()方法接收任意数量的参数,并将它们添加到数组末尾,返回数组的最新长度。pop()方原创 2021-03-19 19:32:21 · 303 阅读 · 0 评论 -
JavaScript数组之fill()与copywithin()方法
一、fill()方法fill()方法可以向一个已有的数组中插入全部或部分相同的值。开始索引用于指定开始填充的位置,它是可选的。如果不提供结束索引,则一直填充到数组末尾。负值索引从数组末尾开始计算。也可以将负索引想象成数组长度加上它得到的一个正索引:const zeroes = [0, 0, 0, 0, 0];// 用5 填充整个数组zeroes.fill(5);console.log(zeroes); // [5, 5, 5, 5, 5]zeroes.fill(0); //原创 2021-03-19 19:21:51 · 434 阅读 · 0 评论 -
javascript数组的from()与of()方法
一、from()方法方法介绍:将传入对象转为数组。用法如下:// 字符串会被拆分为单字符数组console.log(Array.from("『全面资源集』")); // ["『", "全", "面", "资", "源", "集", "』"]// 可以使用from()将集合和映射转换为一个新数组const m = new Map().set(1, 2) .set(3, 4);const s = new Set().add(1) .add(2) .add(3)原创 2021-03-19 18:56:40 · 1793 阅读 · 0 评论