浅习一波JavaScript高级程序设计(第4版)p6

简介: JavaScript 高级程序设计第 4 版(后简称高程4),相较于第 3 版,增加了 ES6 至 ES10 的全新内容,删除了旧版过时的内容,并在原有基础上充实了更加翔实的内容。

image.png

JavaScript 高级程序设计第 4 版(后简称高程4),相较于第 3 版,增加了 ES6 至 ES10 的全新内容,删除了旧版过时的内容,并在原有基础上充实了更加翔实的内容。

中文译版于 2020 年发售,妥妥的“新鲜出炉”,你要是问本瓜:当今学 JavaScript 哪家强,我只能说:红宝书第 4 版最在行。


于是乎,借着更文契机,本瓜将开启一个小系列,带你重看一遍高级程序设计4(先前只是跳着跳着看),将抽取精华,用最简单的话解释核心点、尽量把握全局、快速过一遍的同时,记录与工友们分享~~


正文



第六章:集合引用类型, 主要讲的就是 Object 和 Array


问:

let obj = {}
// 和
let obj = new Object()


这两个是一样的吗?

咱就说,别光看着了,在控制台上打印打印,不就知道了?

image.png

image.png


两者是相同的!


作者提到:

但实际上开发者更倾向于使用对象字面量表示法。这是因为对象字面量代码更少,看起来也更有封装所有相关数据的感觉。


有谁会这样创建数组吗?

let names = Array("Greg")


本瓜想应该很少人会这样~

题外问:你认为以下两句声明,效果一样吗?


let str = new String()
let str = ""


除了 Object,Array 应该就是 ECMAScript 中最常用的类型了。

书归正文,讲到了系列操作数组的方法。


数组索引、数组检测 .isArray()、数组迭代器、数组转换 toString()和 valueOf()、数组操作、排序等等……


特别提下:数组的归并

ECMAScript 为数组提供了两个归并方法:reduce()和 reduceRight(),这两个方法都会迭代数组的所有项,并在此基础上构建一个最终返回值。


reduce() 和 reduceRight() 接收 4 个参数:上一个归并值、当前项、当前项的索引和数 组本身。这个函数返回的任何值都会作为下一次调用同一个函数的第一个参数。

我们熟悉的,用 reduce 作加法:


let values = [1, 2, 3, 4, 5];
let sum = values.reduce((prev, cur, index, array) => prev + cur);
alert(sum); // 15
let values = [1, 2, 3, 4, 5];
let sum = values.reduceRight(function(prev, cur, index, array){
 return prev + cur;
});
alert(sum); // 15


另一个容易忽略的重点:定型数组

定型数组(typed array)是 ECMAScript 新增的结构,目的是提升向原生库传输数据的效率。


为什么要创造定型数组??


一句话可以理解为:为了让 JavaScript 具有更好的 2D、3D 绘制能力~

设计定型数组的目的就是提高与 WebGL 等原生库交换二进制数据的效率。由于定型数组的二进制表示对操作系统而言是一种容易使用的格式,JavaScript 引擎可以重度优化算术运算、按位运算和其他对定型数组的常见操作,因此使用它们速度极快。


ArrayBuffer 是所有定型数组及视图引用的基本单位。

const buf = new ArrayBuffer(16); // 在内存中分配 16 字节
alert(buf.byteLength); // 16
const buf = new ArrayBuffer(12); // 创建一个 12 字节的缓冲


允许读写 ArrayBuffer 的视图是 DataView


const ints = new Int32Array(buf);// 创建一个引用该缓冲的 Int32Array

这个定型数组知道自己的每个元素需要 4 字节(4*8),在控制台打印试试(挖坑:后面有机会专题补以下 ArrayBuffer)


image.png


然后,讲到了 Map (新的集合类型,为 JS 这门语言带来了真正的键/值存储机制;)和 Set (新集合类型,为 JS 这门语言带来集合数据结构);


💡 有没有想过,为什么已经有了 Object ,还要多加一种 Map 类型?有了 Array ,还要多加一种 Set 类型??如果单单是为了增强功能,为什么不直接加操作方法呢?而是要另起炉灶,再重新定义呢?


接着行文一并提到:WeakMap、WeakSet

WeakMap 只接受对象作为键名(null除外),不接受其他类型的值作为键名;键名是弱引用,键值可以是任意的,键名所指向的对象可以被垃圾回收,此时键名是无效的;不能遍历


WeakSet 成员都是对象或数组,成员都是弱引用,可以被垃圾回收机制回收,可以用来保存DOM节点,不容易造成内存泄漏,不能遍历;


小结



JavaScript 比较独特的一点是,函数其实是 Function 类型的实例,这意味着函数也是对象。

Function.prototype===Function.__proto__ // true


另外:ECMAScript 6 新增了一批引用类型:Map、WeakMap、Set 和 WeakSet。这些类型为组织应用程序数据和简化内存管理提供了新能力。


相关文章
|
人工智能 JavaScript 前端开发
JavaScript高级程序设计继承(二)
有时候可能需要定义这样一个类,它可供其他类继承,但本身不会被实例化。虽然 ECMAScript 没 有专门支持这种类的语法 ,但通过 new.target 也很容易实现。new.target 保存通过 new 关键字调 用的类或函数。通过在实例化时检测 new.target 是不是抽象基类,可以阻止对抽象基类的实例化:
137 0
|
JavaScript 前端开发
浅习一波JavaScript高级程序设计(第4版)p7-生成器
于是乎,借着更文契机,本瓜将开启一个小系列,带你重看一遍高级程序设计4(先前只是跳着跳着看),将抽取精华,用最简单的话解释核心点、尽量把握全局、快速过一遍的同时,记录与工友们分享~~
|
设计模式 JavaScript 前端开发
浅习一波JavaScript高级程序设计(第4版)p7-迭代器
JavaScript 高级程序设计第 4 版(后简称高程4),相较于第 3 版,增加了 ES6 至 ES10 的全新内容,删除了旧版过时的内容,并在原有基础上充实了更加翔实的内容。 中文译版于 2020 年发售,妥妥的“新鲜出炉”,你要是问本瓜:当今学 JavaScript 哪家强,我只能说:红宝书第 4 版最在行。
|
缓存 JavaScript 前端开发
浅习一波 JavaScript 高级程序设计(第4版)p2
JavaScript 高级程序设计第 4 版(后简称高程4),相较于第 3 版,增加了 ES6 至 ES10 的全新内容,删除了旧版过时的内容,并在原有基础上充实了更加翔实的内容。
|
存储 JavaScript 前端开发
《JavaScript高级程序设计》__ 作用域&内存
前言 大家好,我是HoMeTown,web领域有一本神书大家应该都有看过,这本书我看过两遍,但是每次看都是粗粗的略过一些重要的知识点,甚至一些面试过程中的问题,在这本书里都能找到答案。
38031 3
《JavaScript高级程序设计》__ 作用域&内存
|
JavaScript 前端开发
《JavaScript高级程序设计》__ 语言基础(上)(1)
前言 大家好,我是HoMeTown,web领域有一本神书大家应该都有看过,这本书我看过两遍,但是每次看都是粗粗的略过一些重要的知识点,甚至一些面试过程中的问题,在这本书里都能找到答案。
137 3
|
移动开发 JavaScript 前端开发
《JavaScript高级程序设计》__ HTML中的JavaScript
前言 大家好,我是HoMeTown,web领域有一本神书大家应该都有看过,这本书我看过两遍,但是每次看都是粗粗的略过一些重要的知识点,甚至一些面试过程中的问题,在这本书里都能找到答案
119 3
|
Web App开发 XML JSON
《JavaScript高级程序设计》__ 什么是JavaScript?
前言 大家好,我是HoMeTown,web领域有一本神书大家应该都有看过,这本书我看过两遍,但是每次看都是粗粗的略过一些重要的知识点,甚至一些面试过程中的问题,在这本书里都能找到答案。
154 0
|
JavaScript 前端开发
《JavaScript高级程序设计》__ 基本引用类型(下)
前言 大家好,我是HoMeTown,web领域有一本神书大家应该都有看过,这本书我看过两遍,但是每次看都是粗粗的略过一些重要的知识点,甚至一些面试过程中的问题,在这本书里都能找到答案。
100 0
|
JavaScript 前端开发 索引
《JavaScript高级程序设计》__ 基本引用类型(上)
前言 大家好,我是HoMeTown,web领域有一本神书大家应该都有看过,这本书我看过两遍,但是每次看都是粗粗的略过一些重要的知识点,甚至一些面试过程中的问题,在这本书里都能找到答案。
99 0

热门文章

最新文章