Vue百日学习计划Day9-15天详细计划-Gemini版
重要提示:
- 番茄时钟: 每个番茄钟为25分钟学习,之后休息5分钟。每完成4个番茄钟,进行一次15-30分钟的长休息。
- 灵活性: JavaScript 的概念较多,尤其是
this
、原型链、闭包和异步编程,可能需要更多时间来理解和消化。请根据个人情况调整。 - 多动手实践: JavaScript 学习的核心在于动手编写代码、调试和观察结果。请务必在每个知识点学习后进行编码实践。
- 资源利用:
- MDN Web Docs (JavaScript): https://developer.mozilla.org/zh-CN/docs/Web/JavaScript
- 现代 JavaScript 教程 (JavaScript.info): https://zh.javascript.info/
- 阮一峰 ECMAScript 6 入门: https://es6.ruanyifeng.com/
- 当前日期: 2025年5月16日 (用于知晓信息时效性,但本计划内容相对稳定)
学习目标 Day 9-15:JavaScript 核心 (ES6+)
- Day 9:JS 基础 - 数据类型、变量、操作符与流程控制
- 理解 JavaScript 的基本数据类型 (原始类型与对象类型)。
- 掌握
let
,const
与var
的区别和使用。 - 熟悉常用操作符 (算术、赋值、比较、逻辑)。
- 掌握基本的流程控制语句 (if/else, switch, for, while)。
- Day 10:作用域、闭包与
this
指向初步- 理解全局作用域、函数作用域和块级作用域。
- 理解什么是闭包,闭包的用途和常见场景。
- 初步接触
this
关键字,了解其在不同执行上下文中的指向。
- Day 11:对象、数组基础与常用方法 (一)
- 学习对象的创建、属性的读写、遍历。
- 学习数组的创建、访问、遍历。
- 掌握数组常用方法:
forEach
,push
,pop
,shift
,unshift
,slice
,splice
。
- Day 12:数组常用方法 (二) 与字符串方法
- 深入掌握数组的转换、迭代和查找方法:
map
,filter
,reduce
,find
,findIndex
,includes
。 - 掌握常用的字符串属性和方法 (length, toUpperCase, toLowerCase, trim, indexOf, slice, substring, split, replace)。
- 深入掌握数组的转换、迭代和查找方法:
- Day 13:ES6+ 核心特性 (一) - 函数、解构、模板字符串、展开/剩余
- 学习箭头函数的语法、特点及其与普通函数的区别 (特别是
this
指向)。 - 掌握数组解构和对象解构赋值。
- 熟练使用模板字符串。
- 理解并运用展开运算符和剩余运算符。
- 学习箭头函数的语法、特点及其与普通函数的区别 (特别是
- Day 14:原型链与继承基础,Promise 与异步编程入门
- 初步理解原型 (prototype)、原型链 (
__proto__
) 的概念以及 JavaScript 基于原型的继承方式。 - 理解同步与异步编程的区别。
- 学习 Promise 的基本概念 (pending, fulfilled, rejected) 和
then
,catch
,finally
的用法。
- 初步理解原型 (prototype)、原型链 (
- Day 15:Async/Await 与 ES Modules 模块化
- 学习
async/await
作为 Promise 的语法糖,如何简化异步代码的书写。 - 理解错误处理 (
try...catch
) 在async/await
中的应用。 - 掌握 ES Modules 的导入 (
import
) 和导出 (export
,export default
) 语法。
- 学习
每日学习计划 (3小时/天)
Day 9: JS 基础 - 数据类型、变量、操作符与流程控制
- 第1个番茄钟 (25分钟学习 + 5分钟休息):
- 主题: JavaScript 简介与引入方式。
- 内容: 了解 JS 的历史、能做什么。学习在 HTML 中通过
<script>
标签引入 JS (内联和外链)。 - 实践: 在 HTML 文件中写下第一行 JS 代码 (
console.log("Hello, World!");
) 并成功在浏览器控制台输出。
- 第2个番茄钟 (25分钟学习 + 5分钟休息):
- 主题: 基本数据类型 (原始类型)。
- 内容: String, Number, Boolean, Null, Undefined, Symbol (ES6), BigInt (ES2020)。学习
typeof
操作符。 - 实践: 声明不同原始类型的变量,并使用
typeof
检查它们的类型。
- 第3个番茄钟 (25分钟学习 + 5分钟休息):
- 主题: 变量声明:
let
,const
, (var
的基本了解及其问题)。 - 内容: 理解
let
和const
的块级作用域特性,const
用于声明常量。简要了解var
的函数作用域和变量提升问题。 - 实践: 尝试用
let
,const
声明变量,在不同作用域下测试其可见性。尝试修改const
声明的变量看会发生什么。
- 主题: 变量声明:
- 第4个番茄钟 (25分钟学习 + 5分钟休息):
- 主题: 常用操作符。
- 内容: 算术操作符 (+, -, *, /, %, ++, --), 赋值操作符 (=, +=, -= 等), 比较操作符 (==, =, !=, !, >, <, >=, <=), 逻辑操作符 (&&, ||, !)。
- 实践: 编写小程序练习这些操作符,特别是
==
与===
的区别。 - (长休息: 15-30分钟)
- 第5个番茄钟 (25分钟学习 + 5分钟休息):
- 主题: 流程控制语句 (一):
if/else
,switch
。 - 内容: 学习条件判断语句的语法和应用场景。
- 实践: 编写根据不同条件执行不同代码块的程序,例如判断一个数字是正数、负数还是零。
- 主题: 流程控制语句 (一):
- 第6个番茄钟 (25分钟学习 + 5分钟休息):
- 主题: 流程控制语句 (二):
for
循环,while
循环,do...while
循环。 - 内容: 学习不同类型循环语句的语法和应用。
- 实践: 使用循环打印数字序列、遍历简单数组(索引访问)等。
- 主题: 流程控制语句 (二):
Day 10: 作用域、闭包与 this
指向初步
- 第1个番茄钟 (25分钟学习 + 5分钟休息):
- 主题: 作用域 (Scope) - 全局作用域、函数作用域。
- 内容: 理解变量的可访问性范围。理解
var
的函数作用域和变量提升。 - 实践: 在函数内外声明变量,观察其作用域。
- 第2个番茄钟 (25分钟学习 + 5分钟休息):
- 主题: 作用域 (Scope) - 块级作用域 (ES6)。
- 内容: 学习
let
和const
引入的块级作用域概念。 - 实践: 在
if
语句块或for
循环块中使用let
声明变量,观察其作用域。
- 第3个番茄钟 (25分钟学习 + 5分钟休息):
- 主题: 闭包 (Closure) - 概念与基本形式。
- 内容: 理解什么是闭包(函数以及其声明时的词法环境的组合),为什么函数可以“记住”其外部作用域的变量。
- 实践: 编写一个简单的闭包示例,例如一个函数返回另一个可以访问外部函数变量的函数。
- 第4个番茄钟 (25分钟学习 + 5分钟休息):
- 主题: 闭包 (Closure) - 用途与常见场景 (如模块化、防抖节流初步)。
- 内容: 探讨闭包的实际应用,如创建私有变量、数据封装。
- 实践: 尝试用闭包实现一个简单的计数器,其计数值不能从外部直接修改。
- (长休息: 15-30分钟)
- 第5个番茄钟 (25分钟学习 + 5分钟休息):
- 主题:
this
指向初步 - 全局上下文与函数直接调用。 - 内容: 了解在全局作用域中
this
的指向 (浏览器中通常是window
)。在普通函数直接调用时this
的指向 (非严格模式下是window
,严格模式下是undefined
)。 - 实践: 在全局和普通函数中打印
this
,观察结果。
- 主题:
- 第6个番茄钟 (25分钟学习 + 5分钟休息):
- 主题:
this
指向初步 - 作为对象方法调用。 - 内容: 理解当函数作为对象的方法调用时,
this
指向该对象。 - 实践: 创建一个对象,为其添加方法,在方法中打印
this
。
- 主题:
Day 11: 对象、数组基础与常用方法 (一)
- 第1个番茄钟 (25分钟学习 + 5分钟休息):
- 主题: 对象 (Object) - 创建与基本操作。
- 内容: 对象字面量创建对象,属性的读取 (点表示法、方括号表示法)、修改、添加和删除。
- 实践: 创建一个描述个人信息的对象,并对其属性进行增删改查。
- 第2个番茄钟 (25分钟学习 + 5分钟休息):
- 主题: 对象 (Object) - 遍历与方法。
- 内容: 使用
for...in
循环遍历对象属性。对象方法的定义和调用。 - 实践: 遍历上一个练习中创建的对象。为对象添加一个方法(例如打招呼)。
- 第3个番茄钟 (25分钟学习 + 5分钟休息):
- 主题: 数组 (Array) - 创建与基本操作。
- 内容: 数组字面量创建数组,通过索引访问、修改数组元素,
length
属性。 - 实践: 创建一个包含数字和字符串的数组,练习访问和修改元素。
- 第4个番茄钟 (25分钟学习 + 5分钟休息):
- 主题: 数组常用方法 (一):
forEach
,push
,pop
。 - 内容: 学习
forEach
遍历数组,push
在末尾添加元素,pop
删除末尾元素。 - 实践: 使用
forEach
打印数组每个元素。练习push
和pop
。 - (长休息: 15-30分钟)
- 主题: 数组常用方法 (一):
- 第5个番茄钟 (25分钟学习 + 5分钟休息):
- 主题: 数组常用方法 (二):
shift
,unshift
。 - 内容: 学习
shift
删除头部元素,unshift
在头部添加元素。 - 实践: 练习
shift
和unshift
,对比与pop
和push
的区别。
- 主题: 数组常用方法 (二):
- 第6个番茄钟 (25分钟学习 + 5分钟休息):
- 主题: 数组常用方法 (三):
slice
,splice
。 - 内容: 学习
slice
(浅拷贝,不修改原数组) 截取数组,splice
(修改原数组) 添加/删除/替换数组元素。 - 实践: 重点练习
splice
的不同用法,理解其参数含义。
- 主题: 数组常用方法 (三):
Day 12: 数组常用方法 (二) 与字符串方法
- 第1个番茄钟 (25分钟学习 + 5分钟休息):
- 主题: 数组迭代方法 (一):
map
。 - 内容: 学习
map
方法如何基于原数组创建一个新数组,新数组的每个元素是原数组元素经过回调函数处理后的结果。 - 实践: 将一个数字数组中的每个元素平方后生成新数组。将一个对象数组中的特定属性提取出来生成新数组。
- 主题: 数组迭代方法 (一):
- 第2个番茄钟 (25分钟学习 + 5分钟休息):
- 主题: 数组迭代方法 (二):
filter
。 - 内容: 学习
filter
方法如何创建一个新数组,包含所有通过回调函数测试的元素。 - 实践: 从数字数组中筛选出所有偶数。从对象数组中筛选出符合特定条件的对物。
- 主题: 数组迭代方法 (二):
- 第3个番茄钟 (25分钟学习 + 5分钟休息):
- 主题: 数组迭代方法 (三):
reduce
。 - 内容: 学习
reduce
方法如何将数组中的所有元素累积处理为一个最终结果 (可以是任何类型)。理解其回调函数的四个参数 (accumulator, currentValue, currentIndex, array) 和初始值参数。 - 实践: 计算数组所有元素的和或积。将二维数组扁平化。
- 主题: 数组迭代方法 (三):
- 第4个番茄钟 (25分钟学习 + 5分钟休息):
- 主题: 数组查找方法:
find
,findIndex
,includes
。 - 内容: 学习
find
返回第一个满足条件的元素,findIndex
返回第一个满足条件的元素的索引,includes
判断数组是否包含某个值。 - 实践: 在数组中查找特定元素或其索引。
- (长休息: 15-30分钟)
- 主题: 数组查找方法:
- 第5个番茄钟 (25分钟学习 + 5分钟休息):
- 主题: 字符串常用属性与方法 (一)。
- 内容:
length
,toUpperCase()
,toLowerCase()
,trim()
,indexOf()
,lastIndexOf()
,includes()
。 - 实践: 练习这些字符串方法,处理简单的字符串操作。
- 第6个番茄钟 (25分钟学习 + 5分钟休息):
- 主题: 字符串常用属性与方法 (二)。
- 内容:
slice()
,substring()
,substr()
(了解即可,不推荐),split()
,replace()
(基本用法)。 - 实践: 截取字符串,按分隔符分割字符串,替换字符串中的子串。
Day 13: ES6+ 核心特性 (一) - 函数、解构、模板字符串、展开/剩余
- 第1个番茄钟 (25分钟学习 + 5分钟休息):
- 主题: 箭头函数 (Arrow Functions) - 语法与基本用法。
- 内容: 学习箭头函数的简洁语法,不同参数情况下的写法。
- 实践: 将普通函数改写为箭头函数。
- 第2个番茄钟 (25分钟学习 + 5分钟休息):
- 主题: 箭头函数 (Arrow Functions) -
this
指向。 - 内容: 重点理解箭头函数不绑定自己的
this
,它会捕获其所在上下文的this
值。对比与普通函数this
的区别。 - 实践: 在对象方法、回调函数 (如
setTimeout
, 数组方法) 中使用箭头函数和普通函数,观察this
的指向。
- 主题: 箭头函数 (Arrow Functions) -
- 第3个番茄钟 (25分钟学习 + 5分钟休息):
- 主题: 解构赋值 (Destructuring Assignment) - 数组解构。
- 内容: 从数组中提取值并赋给变量,支持默认值、剩余元素。
- 实践: 从数组中方便地获取元素,交换变量值。
- 第4个番茄钟 (25分钟学习 + 5分钟休息):
- 主题: 解构赋值 (Destructuring Assignment) - 对象解构。
- 内容: 从对象中提取属性值并赋给变量,支持重命名、默认值、嵌套解构。
- 实践: 从对象中方便地获取属性,特别是在函数参数中使用对象解构。
- (长休息: 15-30分钟)
- 第5个番茄钟 (25分钟学习 + 5分钟休息):
- 主题: 模板字符串 (Template Literals)。
- 内容: 使用反引号 (
`
) 创建字符串,支持嵌入表达式${expression}
和多行字符串。 - 实践: 使用模板字符串拼接包含变量和表达式的复杂字符串。
- 第6个番茄钟 (25分钟学习 + 5分钟休息):
- 主题: 展开运算符 (…) 与剩余参数 (…)。
- 内容: 学习展开运算符在数组和对象中的应用 (如数组合并、对象合并/克隆)。学习剩余参数收集函数的多余参数。
- 实践: 使用展开运算符合并数组、克隆对象。编写一个接受任意数量参数并求和的函数。
Day 14: 原型链与继承基础,Promise 与异步编程入门
- 第1个番茄钟 (25分钟学习 + 5分钟休息):
- 主题: 原型 (Prototype) 与
prototype
属性。 - 内容: 理解构造函数、实例对象和原型对象之间的关系。理解每个函数都有一个
prototype
属性 (指向一个对象)。 - 实践: 定义一个构造函数,查看其
prototype
属性,并向其添加方法。
- 主题: 原型 (Prototype) 与
- 第2个番茄钟 (25分钟学习 + 5分钟休息):
- 主题: 原型链 (
__proto__
或Object.getPrototypeOf()
)。 - 内容: 理解每个对象都有一个内部链接到其原型对象,形成原型链。属性查找会沿着原型链进行。
- 实践: 创建构造函数的实例,检查实例的
__proto__
是否指向构造函数的prototype
。尝试访问实例自身没有但原型有的属性/方法。
- 主题: 原型链 (
- 第3个番茄钟 (25分钟学习 + 5分钟休息):
- 主题: 基于原型的继承 (基础概念)。
- 内容: 简要了解如何通过修改原型链实现继承 (如
Child.prototype = Object.create(Parent.prototype)
)。重点是理解概念,不深入实现复杂继承。 - 实践: 阅读相关资料,理解继承的基本思想。
- 第4个番茄钟 (25分钟学习 + 5分钟休息):
- 主题: 同步与异步编程概念。回调函数与回调地狱。
- 内容: 理解同步操作阻塞后续代码执行,异步操作不阻塞。了解回调函数作为处理异步结果的传统方式,以及可能导致的回调地狱问题。
- 实践: 使用
setTimeout
模拟一个异步操作,并使用回调函数处理结果。观察回调地狱的示例代码。 - (长休息: 15-30分钟)
- 第5个番茄钟 (25分钟学习 + 5分钟休息):
- 主题: Promise 基础 - 概念与状态。
- 内容: 学习 Promise 是什么 (一个表示异步操作最终完成或失败的对象)。理解其三种状态: pending (进行中), fulfilled (已成功), rejected (已失败)。
- 实践: 创建一个简单的 Promise 对象,手动将其状态改变为 fulfilled 或 rejected。
- 第6个番茄钟 (25分钟学习 + 5分钟休息):
- 主题: Promise 基础 -
.then()
,.catch()
,.finally()
。 - 内容: 学习如何使用
.then()
处理 Promise 成功的结果 (和链式调用),.catch()
处理失败的结果,.finally()
执行无论成功失败都会执行的代码。 - 实践: 封装一个返回 Promise 的异步函数 (例如使用
setTimeout
),然后使用.then()
和.catch()
处理。
- 主题: Promise 基础 -
Day 15: Async/Await 与 ES Modules 模块化
- 第1个番茄钟 (25分钟学习 + 5分钟休息):
- 主题:
async
函数。 - 内容: 学习
async
关键字如何让一个函数隐式返回一个 Promise。 - 实践: 将一个普通函数改写为
async
函数,观察其返回值。
- 主题:
- 第2个番茄钟 (25分钟学习 + 5分钟休息):
- 主题:
await
操作符。 - 内容: 学习
await
如何暂停async
函数的执行,等待一个 Promise 完成,并返回其结果。await
只能在async
函数内部使用。 - 实践: 结合上一天封装的返回 Promise 的函数,使用
async/await
来获取其结果,对比.then()
的写法。
- 主题:
- 第3个番茄钟 (25分钟学习 + 5分钟休息):
- 主题:
async/await
中的错误处理。 - 内容: 学习如何使用
try...catch
语句捕获await
后面 Promise 的 rejection。 - 实践: 修改 Promise 使其被 reject,然后使用
try...catch
捕获错误。
- 主题:
- 第4个番茄钟 (25分钟学习 + 5分钟休息):
- 主题: 模块化 (ES Modules) - 概念与
export
。 - 内容: 理解为什么需要模块化。学习如何使用
export
关键字导出变量、函数、类 (命名导出和默认导出export default
)。 - 实践: 创建一个
.js
文件 (math.js
),在其中定义一些函数和变量,并使用export
和export default
导出它们。 - (长休息: 15-30分钟)
- 主题: 模块化 (ES Modules) - 概念与
- 第5个番茄钟 (25分钟学习 + 5分钟休息):
- 主题: 模块化 (ES Modules) -
import
。 - 内容: 学习如何使用
import
关键字从其他模块导入内容 (命名导入、默认导入、整体导入)。 - 实践: 创建另一个
.js
文件 (main.js
),从math.js
中导入之前导出的内容,并使用它们。在 HTML 中通过<script type="module" src="main.js"></script>
引入。
- 主题: 模块化 (ES Modules) -
- 第6个番茄钟 (25分钟学习 + 5分钟休息):
- 主题: JavaScript 核心回顾与练习。
- 内容: 快速回顾 Day 9 - Day 15 的核心概念,特别是 ES6+ 语法、Promise、async/await 和模块化。
- 实践: 尝试将之前写的一些小程序用 ES6+ 语法和模块化方式进行重构。或者找一些在线的 ES6+ 练习题进行巩固。