Vue百日学习计划Day9-15天详细计划-Gemini版

重要提示:

  • 番茄时钟: 每个番茄钟为25分钟学习,之后休息5分钟。每完成4个番茄钟,进行一次15-30分钟的长休息。
  • 灵活性: JavaScript 的概念较多,尤其是 this、原型链、闭包和异步编程,可能需要更多时间来理解和消化。请根据个人情况调整。
  • 多动手实践: JavaScript 学习的核心在于动手编写代码、调试和观察结果。请务必在每个知识点学习后进行编码实践。
  • 资源利用:
  • 当前日期: 2025年5月16日 (用于知晓信息时效性,但本计划内容相对稳定)

学习目标 Day 9-15:JavaScript 核心 (ES6+)

  • Day 9:JS 基础 - 数据类型、变量、操作符与流程控制
    • 理解 JavaScript 的基本数据类型 (原始类型与对象类型)。
    • 掌握 let, constvar 的区别和使用。
    • 熟悉常用操作符 (算术、赋值、比较、逻辑)。
    • 掌握基本的流程控制语句 (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 的用法。
  • 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 的基本了解及其问题)。
    • 内容: 理解 letconst 的块级作用域特性,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)。
    • 内容: 学习 letconst 引入的块级作用域概念。
    • 实践: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 打印数组每个元素。练习 pushpop
    • (长休息: 15-30分钟)
  • 第5个番茄钟 (25分钟学习 + 5分钟休息):
    • 主题: 数组常用方法 (二): shift, unshift
    • 内容: 学习 shift 删除头部元素,unshift 在头部添加元素。
    • 实践: 练习 shiftunshift,对比与 poppush 的区别。
  • 第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 的指向。
  • 第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 属性,并向其添加方法。
  • 第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() 处理。

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),在其中定义一些函数和变量,并使用 exportexport default 导出它们。
    • (长休息: 15-30分钟)
  • 第5个番茄钟 (25分钟学习 + 5分钟休息):
    • 主题: 模块化 (ES Modules) - import
    • 内容: 学习如何使用 import 关键字从其他模块导入内容 (命名导入、默认导入、整体导入)。
    • 实践: 创建另一个 .js 文件 (main.js),从 math.js 中导入之前导出的内容,并使用它们。在 HTML 中通过 <script type="module" src="main.js"></script> 引入。
  • 第6个番茄钟 (25分钟学习 + 5分钟休息):
    • 主题: JavaScript 核心回顾与练习。
    • 内容: 快速回顾 Day 9 - Day 15 的核心概念,特别是 ES6+ 语法、Promise、async/await 和模块化。
    • 实践: 尝试将之前写的一些小程序用 ES6+ 语法和模块化方式进行重构。或者找一些在线的 ES6+ 练习题进行巩固。
相关推荐
梨子同志几秒前
手动实现 JavaScript 的 call、apply 和 bind 方法
前端·javascript
梨子同志2 分钟前
ES6 let 和 const
前端·javascript
用户5806139393003 分钟前
超越 console.log():前端调试的 10 个神级技巧
前端
却尘3 分钟前
当全世界都在用 Rust 重写一切时,Prisma 却选择了反方向
前端·数据库·orm
这是个栗子4 分钟前
前端开发者常用网站
前端
程序猿tu4 分钟前
Axios学习笔记
笔记·学习
前端小白佬20 分钟前
【JS】防抖(debounce)和节流(throttle)
前端·面试
GIS之路22 分钟前
OpenLayers 从后端服务加载 GeoJSON 数据
前端
开始编程吧29 分钟前
【HarmonyOS5】仓颉编程:当多范式统一成为智能时代的「通用语言」
前端
有谁看见我的剑了?32 分钟前
stress 服务器压力测试的工具学习
服务器·学习·压力测试