JavaScript高级程序设计的读书笔记
文章平均质量分 89
努力学前端的南宫
在一家外包小公司做切图仔,干了好几年,如今想要好好学习,另谋出路。下班后自学,自己去解决问题,去倒腾。
《高程四》的阅读笔记我不会再更新了,因为我只是个搬运工,还不如我自己读书,自己做一些小的笔记在旁边,我担心版权问题。但不代表我会停止看这本书。
展开
-
《JavaScript高级程序设计》(第4版)阅读笔记(三十三)
这篇文章开始分享第六章的内容了。6.1 Object到目前为止,大多数引用值的示例使用的是 Object 类型。Object 是ECMAScript中最常用的类型之一。虽然 Object 的实例没有多少功能,但很适合存储和在应用程序间交换数据。显式地创建 Object 的实例有两种方式。第一种是使用 new 操作符和 Object 构造函数,另一种方式是使用对象字面量(object literal)表示法。对象字面量是对象定义的简写形式,目的是为了简化包含大量属性的对象的创建。...原创 2021-03-25 20:58:09 · 221 阅读 · 2 评论 -
《JavaScript高级程序设计》(第4版)阅读笔记(三十)
这一篇继续分享《高程四》的第五章的内容。9. 字符串迭代与解构字符串的原型上暴露了一个 @@iterator 方法,表示可以迭代字符串的每个字符。可以像下面这样手动使用迭代器:let message = "abc";let stringIterator = message[Symbol.iterator]();console.log(stringIterator.next()); // {value: "a", done: false}console.log(stringIte..原创 2021-03-21 16:16:44 · 187 阅读 · 0 评论 -
《JavaScript高级程序设计》(第4版)阅读笔记(二十九)
这篇博客继续分享高程四第五章的内容。3. 字符串操作方法本节介绍几个操作字符串值的方法。首先是 concat() ,用于将一个或多个字符串拼接成一个新字符串。来看下面的例子:let stringValue = "hello ";let result = stringValue.concat("world");console.log(result); // "hello world"console.log(stringValue); // "hello"在这个例子中,对 strin.原创 2021-03-17 15:38:55 · 130 阅读 · 0 评论 -
《JavaScript高级程序设计》(第4版)阅读笔记(二十八)
这篇博客继续分享《高程四》第五章的内容。5.3.2 NumberNumber 是对应数值的引用类型。要创建一个 Number 对象,就使用 Number 构造函数并传入一个数值,如下例所示:let numberObject = new Number(10);与 Boolean 类型一样, Number 类型重写了 valueOf() 、toLocaleString() 和 toString() 方法。 valueOf() 方法返回Number 对象表示的原始数值,另外两个方法返..原创 2021-03-15 21:05:57 · 194 阅读 · 0 评论 -
《JavaScript高级程序设计》(第4版)阅读笔记(二十七)
这篇文章继续分享《高程四》第五章的内容。5.2.4 模式局限虽然ECMAScript对正则表达式的支持有了长足的进步,但仍然缺少Perl语言中的一些高级特性。下列特性目前还没有得到ECMAScript的支持(想要了解更多信息,可以参考Regular-Expressions.info网站):\A 和 \Z 锚(分别匹配字符串的开始和末尾)联合及交叉类原子组x (忽略空格)匹配模式条件式匹配正则表达式注释虽然还有这些局限,但ECMAScript的正则表达式已经非常强大,可..原创 2021-03-14 11:05:49 · 153 阅读 · 0 评论 -
《JavaScript高级程序设计》(第4版)阅读笔记(二十六)
这篇文章继续分享《高程四》第5章的内容。从5.2.1节开始。5.2.1 RegExp 实例属性每个 RegExp 实例都有下列属性,提供有关模式的各方面信息。global :布尔值,表示是否设置了 g 标记。ignoreCase :布尔值,表示是否设置了 i 标记。unicode :布尔值,表示是否设置了 u 标记。sticky :布尔值,表示是否设置了 y 标记。lastIndex :整数,表示在源字符串中下一次搜索的开始位置,始终从0开始。multiline :布尔值,..原创 2021-03-09 23:31:01 · 146 阅读 · 0 评论 -
《JavaScript高级程序设计》(第4版)阅读笔记(二十五)
这篇文章继续分享《高程四》第五章的内容。有需要的同学可以跟着看呀。5.1.2 日期格式化方法原创 2021-03-07 17:04:51 · 165 阅读 · 1 评论 -
《JavaScript高级程序设计》(第4版)阅读笔记(二十四)
这篇文章开始分享第五章的内容了。第 5 章 基本引用类型引用值(或者对象)是某个特定引用类型的实例。在ECMAScript中,引用类型是把数据和功能组织到一起的结构,经常被人错误地称作“类”。虽然从技术上讲JavaScript是一门面向对象语言,但ECMAScript缺少传统的面向对象编程语言所具备的某些基本结构,包括类和接口。引用类型有时候也被称为对象定义,因为它们描述了自己的对象应有的属性和方法。对象被认为是某个特定引用类型的实例。新对象通过使用 new 操作符后跟一个构造函数(c..原创 2021-03-03 21:29:17 · 151 阅读 · 0 评论 -
《JavaScript高级程序设计》(第4版)阅读笔记(二十三)
4.3.3 性能垃圾回收程序会周期性运行,如果内存中分配了很多变量,则可能造成性能损失,因此垃圾回收的时间调度很重要。尤其是在内存有限的移动设备上,垃圾回收有可能会明显拖慢渲染的速度和帧速率。开发者不知道什么时候运行时会收集垃圾,因此最好的办法是在写代码时就要做到:无论什么时候开始收集垃圾,都能让它尽快结束工作。(也就是说,我们写的代码要从方便垃圾回收的角度来考虑)现代垃圾回收程序会基于对JavaScript运行时环境的探测来决定何时运行。探测机制因引擎而异,但基本上都是根据已分配对象的大小和.原创 2021-03-02 23:09:30 · 295 阅读 · 0 评论 -
《JavaScript高级程序设计》(第4版)阅读笔记(二十二)
4. 标识符查找当在特定上下文中为读取或写入而引用一个标识符时,必须通过搜索确定这个标识符表示什么。搜索开始于作用域链前端,以给定的名称搜索对应的标识符。如果在局部上下文中找到该标识符,则搜索停止,变量确定;如果没有找到变量名,则继续沿作用域链搜索。(注意,作用域链中的对象也有一个原型链,因此搜索可能涉及每个对象的原型链。)这个过程一直持续到搜索至全局上下文的变量对象。如果仍然没有找到标识符,则说明其未声明。为更好地说明标识符查找,我们来看一个例子:var color = 'blue';.原创 2021-02-28 11:45:43 · 152 阅读 · 0 评论 -
《JavaScript高级程序设计》(第4版)阅读笔记(二十一)
这一篇继续分享《高程四》第四章的内容。4.2.2 变量声明ES6之后,JavaScript的变量声明经历了翻天覆地的变化。直到ECMAScript 5.1, var 都是声明变量的唯一关键字。ES6不仅增加了let 和 const 两个关键字,而且还让这两个关键字压倒性地超越var 成为首选。...原创 2021-02-25 12:55:42 · 137 阅读 · 0 评论 -
《JavaScript高级程序设计》(第4版)阅读笔记(二十)
这篇文章继续分享《高程四》第四章的内容。4.1.4 确定类型前一章提到的 typeof 操作符最适合用来判断一个变量是否为原始类型。原创 2021-02-24 12:57:59 · 172 阅读 · 0 评论 -
《JavaScript高级程序设计》(第4版)阅读笔记(十九)
这一篇继续分享第三章的内容,第三章的内容快要结束了。3.7 函数函数对任何语言来说都是核心组件,因为它们可以封装语句,然后在任何地方、任何时间执行(也就是说,函数的好处是可以封装重复的代码)。ECMAScript中的函数使用function 关键字声明,后跟一组参数,然后是函数体。以下是函数的基本语法:function functionName(arg0, arg1,...,argN) { statements}可以通过函数名来调用函数,要传给函数的参数放在括号里(如果..原创 2021-02-22 22:40:46 · 183 阅读 · 0 评论 -
《JavaScript高级程序设计》(第4版)阅读笔记(十八)
这一篇继续分享《高程四》第三章的内容。3.6.8 break 和 continue 语句break 和 continue 语句为执行循环代码提供了更严格的控制手段。其中, break 语句用于立即退出循环,强制执行循环后的下一条语句。而 continue 语句也用于立即退出循环,但会再次从循环顶部开始执行(也就是不再继续执行本次循环,但还会执行下次循环)。下面看一个例子:let num = 0;for (let i = 1; i < 10; i++) { if (i ..原创 2021-02-21 15:00:04 · 177 阅读 · 0 评论 -
《JavaScript高级程序设计》(第4版)阅读笔记(十七)
这一篇博文继续分享《高程四》第三章的内容,估计第三章快要结束了。3.6.2 do-while 语句do-while 语句是一种后测试循环语句,即循环体中的代码执行后才会对退出条件进行求值。换句话说,循环体内的代码至少执行一次。...原创 2021-02-19 23:23:31 · 139 阅读 · 0 评论 -
《JavaScript高级程序设计》(第4版)阅读笔记(十六)
这篇博文继续分享《高程四》第三章的内容,从3.5.8开始。3.5.8 相等操作符判断两个变量是否相等是编程中最重要的操作之一。在比较字符串、数值和布尔值是否相等时,过程都很直观。但是在比较两个对象是否相等时,情形就比较复杂了。ECMAScript提供了两组操作符。第一组是等于和不等于,它们在比较之前执行转换。第二组是全等和不全等,它们在比较之前不执行转换。(在《你不知道的JavaScript》中,把这两种分别介绍成“宽松相等”和“严格相等”。注意,虽然“===”要求类型和值都相等,看起来要求更高.原创 2021-02-16 16:42:17 · 192 阅读 · 0 评论 -
《JavaScript高级程序设计》(第4版)阅读笔记(十五)
这篇文章继续讲《高程四》的第三章的内容。3.5.4 乘性操作符ECMAScript定义了3个乘性操作符:乘法、除法和取模。这些操作符跟它们在Java、C语言及Perl中对应的操作符作用一样,但在处理非数值时,它们也会包含一些自动的类型转换。如果乘性操作符有不是数值的操作数,则该操作数会在后台被使用 Number() 转型函数转换为数值。这意味着空字符串会被当成0,而布尔值 true 会被当成1。1. 乘法操作符乘法操作符由一个星号( * )表示,可以用于计算两个数值的乘积。乘...原创 2021-02-15 22:27:32 · 151 阅读 · 0 评论 -
《JavaScript高级程序设计》(第4版)阅读笔记(十四)
这一篇继续来说《高程四》的第三章。目前是看到了3.5.2的位操作符这里。2. 按位与按位与操作符用和号( & )表示,有两个操作数。本质上,按位与就是将两个数的每一个位对齐,然后基于真值表中的规则,对每一位执行相应的与操作。(也就是把两个操作数进行逐位的与运算,与运算就是“两个值都为1才得到1,否则都得到0”的运算)...原创 2021-02-09 23:24:46 · 192 阅读 · 0 评论 -
《JavaScript高级程序设计》(第4版)阅读笔记(十三)
这篇文章继续分享第三章的内容。3.5 操作符ECMA-262描述了一组可用于操作数据值的操作符,包括数学操作符(如加、减)、位操作符、关系操作符和相等操作符等。ECMAScript中的操作符是独特的,因为它们可用于各种值,包括字符串、数值、布尔值,甚至还有对象。在应用给对象时,操作符通常会调用 valueOf() 和 / 或 toString() 方法来取得可以计算的值。3.5.1 一元操作符只操作一个值的操作符叫一元操作符(unary operator)。这是ECMAScript中最.原创 2021-02-05 22:09:24 · 213 阅读 · 0 评论 -
《JavaScript高级程序设计》(第4版)阅读笔记(十二)
这篇文章继续分享第三章的内容,目前看到了系统内置的一些Symbol,也就是对象的一些固有属性。12. Symbol.species据ECMAScript规范,这个符号作为一个属性表示“一个函数值,该函数作为创建派生对象的构造函数”。这个属性在内置类型中最常用,用于对内置类型实例方法的返回值暴露实例化派生对象的方法。用 Symbol.species 定义静态的获取器(getter)方法,可以覆盖新创建实例的原型定义(下面的代码举了两个例子,Bar和Baz两个类都是内置类型Array的派生类。其原创 2021-01-27 22:25:29 · 203 阅读 · 3 评论 -
《JavaScript高级程序设计》(第4版)阅读笔记(十一)
这篇文章继续分享第三章的内容,现在讲到了Symbol的内容。8. Symbol.iterator根据ECMAScript规范,这个符号作为一个属性表示“一个方法,该方法返回对象默认的迭代器。由 for-of 语句使用”。换句话说,这个符号表示实现迭代器API的函数。for-of 循环这样的语言结构会利用这个函数执行迭代操作。循环时,它们会调用以 Symbol.iterator 为键的函数,并默认这个函数会返回一个实现迭代器API的对象。很多时候,返回的对象是实现该API的 Gener..原创 2021-01-26 21:10:33 · 179 阅读 · 0 评论