![](https://img-blog.csdnimg.cn/c1f5a2442637402f99ccc4ff667c8a0d.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
现代Javascript高级教程
文章平均质量分 91
ECMAScript 6+(ES6+):详细介绍ES6及其后续版本中引入的新特性,如箭头函数、解构赋值、模板字面量、迭代器等。同时,还介绍了ES模块化以及模块加载器的使用。
异步编程:讲解JavaScript中的异步编程模式和技术,包括回调函数、Promise、Async/Await和Generat
linwu-hi
高级前端开发工程师
就职于腾讯等多家互联网大厂
《现代Javascript高级教程》、《现代Typescript高级教程》、《深入浅出Dart》作者
展开
-
《现代JavaScript高级教程》异步的终极解决方案:async/await
最后,我们创建了一个 asyncToGenerator 函数,该函数接受一个 Generator 函数作为参数,并返回一个新的 Promise,这个 Promise 的解析值就是 Generator 函数的返回值。我们知道 Generator 可以在 yield 关键字处暂停和恢复执行,Promise 可以处理异步操作,两者结合在一起,就可以实现一个类似于 async/await 的功能。在async函数内部,我们可以使用await关键字来暂停函数的执行,等待一个异步操作的完成,并获得其结果。原创 2023-07-09 14:11:37 · 209 阅读 · 0 评论 -
《现代JavaScript高级教程》JavaScript中的Generator函数与其在实现Async/Await的应用
在JavaScript的世界里,异步编程是一个核心的主题,而Generator函数和Async/Await则是它的重要部分。在JavaScript中,Async/Await是一种处理异步操作的新方法,它基于Promise和Generator函数。函数接受一个Generator函数作为参数,返回一个新的函数。这种暂停执行的特性使得Generator函数能够以一种完全不同的方式来编写和理解代码,尤其是在处理复杂的异步逻辑时。关键字,我们可以暂停函数的执行,等待异步操作完成,然后再继续执行。后的值作为返回结果。原创 2023-07-09 14:10:50 · 296 阅读 · 0 评论 -
《现代JavaScript高级教程》实现符合Promise/A+规范的Promise
Promise是JavaScript中处理异步操作的重要工具之一。Promise/A+规范是一种关于Promise实现的标准,它定义了Promise的行为和方法。本文将详细介绍如何实现Promise/A+规范,让你了解Promise的工作原理并能够自己实现一个符合规范的Promise。pending(进行中):Promise的初始状态,表示异步操作正在执行。fulfilled(已完成):异步操作成功完成,并返回一个值,称为解决值(fulfillment value)。原创 2023-07-09 14:10:07 · 238 阅读 · 0 评论 -
《现代JavaScript高级教程》JS中的异步编程与Promise
以上是关于 JavaScript 中异步编程、事件循环、任务队列、宏任务、微任务,以及requestAnimationFrame在事件循环的位置,Promise 的发展和如何解决回调地狱的详细介绍。requestAnimationFrame 的位置在事件循环中的具体位置是视浏览器的实现而定,但一般来说,它在宏任务执行完,渲染之前,这使得其可以获取到最新的布局和样式信息。事件循环是 JavaScript 内部的一个处理过程,系统会在此处不断地循环等待,检查任务队列中是否有任务,如果有,就处理它。原创 2023-07-09 14:09:20 · 173 阅读 · 0 评论 -
《现代JavaScript高级教程》JavaScript Error 类: 异常处理与错误管理
Error 类是 JavaScript 提供的内置类之一,它用于表示各种类型的错误。内置错误:由 JavaScript 引擎或运行环境提供的错误,例如语法错误、类型错误等。自定义错误:由开发人员自己创建的错误,用于表示特定的业务逻辑或程序错误。Error 类是所有内置错误的基类,其他内置错误类(如 SyntaxError、TypeError 等)都继承自 Error 类。自定义错误也可以继承 Error 类来实现自定义的错误类型。原创 2023-07-09 14:08:15 · 277 阅读 · 0 评论 -
《现代JavaScript高级教程》正则表达式的常见问题与练习
正则表达式是面试中经常被提及的主题之一,但很多人在面试中对于正则表达式的问题常常感到困惑。是 JavaScript 中正则表达式对象的一个方法,用于检测正则表达式对象与传入的字符串是否匹配。是字符串的方法,它接受一个正则表达式作为参数,并返回字符串中与正则表达式匹配的结果。方法都会返回第一个匹配结果的信息数组,包括匹配的字符串、分组捕获的值以及其他属性。符号,然后是由字母、数字组成的域名,最后是一个以两个或更多字母组成的顶级域名。在正则表达式中,修饰符是在正则表达式主体后面的字符,用于控制匹配模式的行为。原创 2023-07-09 14:04:45 · 204 阅读 · 0 评论 -
《现代JavaScript高级教程》Date类:日期和时间处理
/ 使用示例 const date = new Date();本文介绍了Date类的属性、应用场景,并提供了一些常用的Date方法的实现代码示例。Date类在JavaScript中用于处理日期和时间相关的操作非常重要,掌握其基本用法能够帮助我们更好地处理和管理日期和时间。通过逐步学习和实践,我们可以在实际项目中灵活运用Date类,满足各种日期和时间处理的需求。原创 2023-07-09 14:03:50 · 273 阅读 · 0 评论 -
《现代JavaScript高级教程》JS Shadow DOM:创建封装的组件和样式隔离
Shadow DOM 是一项 Web 标准,用于创建封装的组件并实现样式隔离。它允许将组件的 HTML 结构、样式和行为封装在一个独立的 DOM 树中,从而与主文档的 DOM 树相互隔离。通过这种方式,开发者可以创建具有独立样式和行为的组件,而不用担心与其他组件或主文档的样式冲突。我们还可以模拟实现一些自定义的 Shadow DOM API,以增强 Shadow DOM 的功能。下面是一个示例,展示如何实现一个自定义的insertText');在上面的示例中,我们定义了一个名为。原创 2023-07-09 14:02:36 · 560 阅读 · 0 评论 -
《现代JavaScript高级教程》前端跨页面通信:实现页面间的数据传递与交互
前端跨页面通信是指在不同的浏览器页面或标签页之间进行数据传递和交互的过程。在单页面应用(Single-Page Application)中,这种通信往往是在同一页面的不同组件之间进行的,而在多页面应用(Multi-Page Application)中,通信涉及到不同的页面之间的数据传递和交互。前端跨页面通信的目的是实现不同页面之间的信息共享和协作,使得用户在不同页面间的操作能够产生相应的效果和影响。在不同页面之间传递数据和状态。发送消息和通知。同步数据和状态的更新。实现页面间的协作和交互操作。原创 2023-07-09 14:01:34 · 960 阅读 · 0 评论 -
《现代JavaScript高级教程》JavaScript修饰器:简化代码,增强功能
修饰器是一种用于修改类、方法或属性的语法,它可以在不修改原始代码的情况下增强其功能。修饰器可以实现横切关注点(cross-cutting concerns)的功能,例如日志记录、性能分析、缓存等。通过将这些功能与原始代码分离,我们可以更好地组织和维护代码,并实现更高的可重用性和可扩展性。原创 2023-07-09 13:59:35 · 504 阅读 · 0 评论 -
《现代JavaScript高级教程》 详解Cookie, Session, SessionStorage, LocalStorage
Cookie是一种在客户端存储数据的机制,它将数据以键值对的形式存储在用户的浏览器中。名称和值:每个Cookie都有一个名称和对应的值,以键值对的形式表示。域(Domain):Cookie的域属性指定了可以访问Cookie的域名。默认情况下,Cookie的域属性设置为创建Cookie的页面的域名。路径(Path):Cookie的路径属性指定了可以访问Cookie的路径。默认情况下,Cookie的路径属性设置为创建Cookie的页面的路径。过期时间(Expires/Max-Age)原创 2023-07-06 08:30:42 · 1017 阅读 · 0 评论 -
《现代Javascript高级教程》深入理解JSON.stringify
本文详细介绍了 JSON.stringify() 的属性、应用场景,并提供了一个完整而优雅的实现,处理了循环引用、特殊类型(如日期和正则表达式)以及性能优化。我们还讨论了注意事项和相关的参考资料。通过深入了解和熟练掌握 JSON.stringify(),我们可以更好地处理和操作 JSON 数据,提高前端开发的质量和效率。记住,JSON.stringify() 是处理 JSON 数据的强大工具,但在特殊情况下需要特别小心,确保正确处理特殊类型和避免循环引用的问题。原创 2023-07-04 13:33:13 · 306 阅读 · 1 评论 -
《现代Javascript高级教程》JavaScript深拷贝与浅拷贝
在JavaScript中,对象的拷贝是一项常见的操作。浅拷贝和深拷贝是两种常用的拷贝方式。浅拷贝只复制对象的引用,而深拷贝创建了一个全新的对象,包含与原始对象相同的值和结构。深拷贝和浅拷贝各有适用的场景和注意事项。本文将详细介绍如何实现一个完整而优雅的深拷贝函数,处理循环引用和特殊类型,优化性能,并探讨深拷贝和浅拷贝的应用场景、注意事项和相关属性。原创 2023-07-04 13:30:00 · 160 阅读 · 0 评论 -
《现代Javascript高级教程》深入理解Proxy
在现代JavaScript中,Proxy是一种非常有用的特性,它允许我们在许多常规操作中插入自定义行为。然而,由于其深度和复杂性,很多开发者可能会对如何使用它或它的工作原理感到困惑。在本篇文章中,我们将详细讨论JavaScript Proxy,并通过代码示例演示其使用。原创 2023-07-04 13:29:12 · 274 阅读 · 0 评论 -
《现代Javascript高级教程》Iterator 迭代器:简化集合遍历的利器
除了使用内置数据结构提供的迭代器之外,我们还可以自定义迭代器来遍历自定义数据结构。要实现一个自定义迭代器,我们需要定义一个具有next方法的对象,并且该对象的next方法需要返回一个包含value和done属性的对象。} , };在上面的示例中,我们定义了一个自定义数据结构myIterable,它包含一个数组data和一个自定义的迭代器对象。迭代器对象的next方法会依次返回数组中的元素,并在遍历结束时返回。原创 2023-07-04 13:30:57 · 1052 阅读 · 0 评论 -
《现代Javascript高级教程》面向对象编程与Class
面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,它将程序中的对象作为基本单元,通过封装、继承和多态等机制来组织和管理代码。面向对象编程将现实世界中的实体抽象为代码中的对象,对象拥有自己的状态(属性)和行为(方法),并与其他对象进行交互。封装(Encapsulation):将数据和操作数据的方法封装在一个对象中,使其成为一个独立的实体,外部无法直接访问对象的内部实现细节。继承(Inheritance)原创 2023-07-04 13:30:15 · 197 阅读 · 0 评论 -
《现代Javascript高级教程》 深入理解JavaScript中的WeakMap和WeakSet
在我们深入研究这两种新的数据结构之前,首先来了解一下它们的基本特性。原创 2023-07-04 13:27:12 · 443 阅读 · 0 评论 -
《现代Javascript高级教程》JavaScript引擎的垃圾回收机制
JavaScript的垃圾回收机制是一个复杂且精妙的系统,它能自动管理内存,让开发者可以专注于实现业务逻辑。虽然大多数时候我们不需要关心垃圾回收的具体过程,但是了解其工作原理,可以帮助我们编写出更高效、更具性能的代码,避免可能导致内存问题的代码模式。原创 2023-07-04 13:26:37 · 186 阅读 · 0 评论 -
《现代Javascript高级教程》JavaScript引擎的工作原理:代码解析与执行
JavaScript引擎是一种解释和执行JavaScript代码的软件或硬件组件。它负责将JavaScript代码转换为可执行的指令,并在计算机或设备上执行这些指令。每个浏览器都有自己的JavaScript引擎,用于在浏览器中执行JavaScript代码。V8引擎:由Google开发,用于Google Chrome浏览器和Node.js服务器环境。SpiderMonkey引擎:由Mozilla开发,用于Mozilla Firefox浏览器。JavaScriptCore引擎。原创 2023-07-04 13:28:16 · 566 阅读 · 0 评论 -
《现代Javascript高级教程》前端模块化
前端开发中,代码的组织和管理一直是开发者面临的一大挑战。随着Web应用日益复杂,对代码结构和组织的需求也更为明显。这种背景下,模块化编程应运而生,开发者们可以将复杂的代码拆分为可管理和可重用的模块。在本文中,我们将通过实际代码示例,来探索前端模块化的发展历程及各种模块化方案的实现原理。原创 2023-07-04 13:24:49 · 168 阅读 · 0 评论 -
《现代Javascript高级教程》JavaScript事件流:深入理解事件处理和传播机制
JavaScript中的事件流是一种机制,用于描述和处理事件在DOM树中的传播过程。了解事件流的属性和工作原理对于编写高效的事件处理代码和实现复杂的交互功能至关重要。本文将详细介绍JavaScript事件流的发展流程、属性以及应用场景,并提供一些代码示例和引用资料,帮助读者深入理解并应用这一重要的前端技术。原创 2023-07-03 13:23:44 · 278 阅读 · 0 评论 -
《现代Javascript高级教程》原型和原型链
JavaScript是一门支持面向对象编程的语言,它的函数是第一公民,同时也拥有类的概念。不同于传统的基于类的继承,JavaScript的类和继承是基于原型链模型的。在ES2015/ES6中引入了关键字,但其本质仍然是基于原型链的语法糖。原型(Prototype)是JavaScript中对象的一个特殊属性,它用于实现属性和方法的继承。在JavaScript中,每个对象都有一个原型属性,它指向另一个对象,这个对象被称为原型对象。通过原型链,对象可以从原型对象继承属性和方法。原型的概念可以用以下方式解释:每个J原创 2023-07-03 13:22:34 · 168 阅读 · 0 评论 -
《现代Javascript高级教程》Javascript数据类型和类型转换
在JavaScript中,理解数据类型,如何区分它们,以及它们如何被转换是至关重要的。在这篇文章中,我们将探讨这些主题,以帮助巩固你的JavaScript基础。原创 2023-07-03 13:19:01 · 197 阅读 · 0 评论 -
《现代Javascript高级教程》JavaScript对象
在 JavaScript 中,对象是一种非常重要的数据类型,它允许我们以键值对的形式组织和存储数据。对象提供了丰富的属性和方法,使得我们能够创建、操作和管理复杂的数据结构。本文将详细介绍 JavaScript 对象的属性和常用 API,并提供一个模拟实现对象的示例。同时,还将探讨对象的应用场景和一些相关的参考资料。原创 2023-07-03 13:18:19 · 160 阅读 · 0 评论 -
《现代Javascript高级教程》JavaScript数组
数组是一种有序的数据集合,它可以存储多个值,并根据索引访问和操作这些值。在JavaScript中,数组是一种动态类型的数据结构,可以容纳任意类型的数据,包括基本类型和对象。数组的长度是动态可变的,可以根据需要随时添加或删除元素。数组的索引是从0开始的,通过索引可以快速访问和修改数组中的元素。数组可以包含不同类型的元素,甚至可以嵌套包含其他数组。JavaScript提供了许多方法和属性来操作和处理数组,使得数组成为处理数据的强大工具。原创 2023-07-03 13:17:36 · 192 阅读 · 0 评论 -
《现代Javascript高级教程》 函数上下文和this关键字
函数是 JavaScript 中最重要的概念之一,理解函数的定义和调用方式涉及到多个知识点,特别是函数的上下文,即函数中的this关键字,是前端面试中必考的知识点。本文将介绍函数上下文、箭头函数以及修正this指向的方法。原创 2023-07-03 13:19:11 · 157 阅读 · 0 评论 -
《现代Javascript高级教程》执行上下文与闭包
JavaScript中的闭包源于计算机科学中的一种理论概念,称为“λ演算”(Lambda Calculus)。λ演算是计算机科学的基础之一,1930年由Alonzo Church提出,它是一种用于描述计算过程的数学抽象模型,也是函数式编程语言的基础。在JavaScript中,闭包是函数和声明该函数的词法环境的组合。这个环境包含了闭包创建时所能访问的所有局部变量。理解闭包,需要理解JavaScript的特性和工作原理。JavaScript的函数在创建时,就确定了其操作的上下文环境,即词法作用域。原创 2023-07-03 13:15:59 · 169 阅读 · 0 评论 -
《现代Javascript高级教程》作用域和作用域链
作用域、作用域链和闭包是 JavaScript 中重要的概念,它们相互关联,共同构建了 JavaScript 的变量访问和代码组织机制。理解这些概念的原理和应用场景对于编写高质量的 JavaScript 代码至关重要。通过词法作用域,我们可以控制变量的可见性和访问权限,实现模块化的代码组织,避免命名冲突和变量污染。作用域链决定了变量的查找顺序,使得 JavaScript 可以正确地找到并访问变量。原创 2023-07-03 13:14:59 · 270 阅读 · 0 评论 -
《现代Javascript高级教程》序言
可能是市面上比较好的Javascript高级教程,适合有一定Javascript基础的同学学习欢迎来到《现代JavaScript高级教程》!在这本书中,我将与您一起探索JavaScript这门令人着迷的编程语言的深度和广度。作为一名曾在腾讯担任高级前端开发工程师的经验分享者,我深知JavaScript在当今软件开发领域中的重要性和广泛应用。它不仅仅是一门语言,更是连接着互联网世界的纽带。无论是网页应用、移动应用、服务器端开发,还是大规模的跨平台解决方案,JavaScript都扮演着至关重要的角色。原创 2023-07-03 13:16:21 · 300 阅读 · 0 评论