blog
blog copied to clipboard
this is my blog
## keep-alive 用法 我们先来看看 官方文档中[keep-alive](https://cn.vuejs.org/v2/api/#keep-alive) 的用法。 ```html ``` - props: - include:只有名称匹配的组件才会被缓存 - exclude: 任何名称匹配的组件都不会被缓存 - max: 最多可以缓存多少组件实例。(2.5.0 新增, 一旦这个数字达到了,在新实例被创建之前,已缓存组件中最久没有被访问的实例会被销毁掉) - 用法 - keep-alive 包裹动态组件时,会缓存不活动的组件实例,而不是销毁他们。 - 当组件在 keep-alive 内被切换, 它的...
## 前言 相信大部分人都已经在使用 React hooks 了,但是在开发过程中,我们要 知其然知其所以然。整理了一下最近使用 React hooks 遇到的一些问题,如果有问题或更好的答案,欢迎一起交流。 ## 目录 - 为什么要在 React 中引入Hook ? Hooks 解决了什么问题 - mixin、HOC 、render props、hooks - React Hooks 原理 - Hooks 中闭包的坑...
# 目录 - `Iterator`(迭代器) - `for...of` `for...of` 是ES6引入用来遍历所有数据结构的统一方法。 **这里的所有数据结构只指具有`iterator接口`的数据。一个数据只要部署了 `Symbol.iterator`,就具有了 `iterator`接口,就可以使用 `for...of` 循环遍历它的成员。也就是说,for...of循环内部调用的数据结构为`Symbol.iterator`方法。** `for...of`循环可以使用的范围包括数组、Set 和 Map 结构、某些类似数组的对象(比如`arguments`对象、`DOM NodeList` 对象)、 `Generator` 对象,以及字符串。也就是说上面提到的这些数据类型原生就具备了 `iterator`接口。 > 所以千万不要错误地认为 `for...of` 只是用来遍历数组的。 ## Iterator ### 为什么引入...
## 前言 本周发起了一个100天前端进阶计划,每天一个知识点,搞明白背后的原理,这是第二周的总结,请注意查收。 以面试题的形式看自己本周掌握了多少。 ## 1.下面代码输出什么 ```js class Chameleon { static colorChange(newColor) { this.newColor = newColor return this.newColor } constructor({ newColor = 'green' } = {}) { this.newColor = newColor...
## 目录 - 基本数据类型和引用数据类型 - 声明提升 - var,let,const ## 基本数据类型和引用数据类型 基本数据类型是按值访问的,因为可以操作保存在变量中的实际的值。 引用数据类型的值是保存在内存中的对象,JS不允许直接访问内存中的位置,所以在操作的时候操作的是对象的引用;因此是引用数据类型是按照引用访问的。 ### 复制变量值 复制基本类型的值 ```js var num1 = 5; var num2 = num1; ``` num1和num2中的5是完全独立的,互不影响  复制引用类型 ```js var...
## 前言 JavaScript装饰器(Decorator)的语法现在处于 Stage 2 阶段,具体的可以查看 [proposal-decorators](https://github.com/tc39/proposal-decorators)。 文章下面的内容是根据以前的提案同时参考了一些文章,已经有点过时了。 ## 目录 - 装饰器 - 类的装饰 - 方法的装饰 - 为什么装饰器不能用于函数 - core-decorators.js ## 装饰器 装饰器(Decorator)目前,是一种与类相关的语法,用来注释或修改类和类的方法。 装饰器是一种函数,写成 `@ + 函数名`。它可以放在类和类方法的定义前面 ```js @frozen class...
## Error类型 - EvalError(eval错误) - RangeError(范围错误) - ReferenceError(引用错误) - SyntaxError(语法错误) - TypeError(类型错误) - URIError(URI错误) > 常见的有 ReferenceError(引用错误), SyntaxError(语法错误), TypeError(类型错误) ## ReferenceError(引用错误) 引用一个不存在的变量或者左值类型错误时,会触发。 ```js console.log(a); // ReferenceError: Cannot access 'a' before...
## 目录 - class - 静态方法 - 静态属性 - 继承 - super ## class class是一个语法糖,其底层还是通过 `构造函数` 去创建的。所以它的绝大部分功能,ES5 都可以做到。新的class写法只是让对象原型的写法更加清晰、更像面向对象编程的语法而已。 ```js function Person(name, age) { this.name = name; this.age = age; }...
## 前言 `async`其实就是 `Generator`的语法糖,看本篇文章之前可以先看一下上一篇文章 [Generator函数](https://github.com/funnycoderstar/blog/issues/104)。理解 `Generator`就容易理解为什么说`async`是异步编程的完美解决方案了。 ## 目录 - async函数 - async函数原理 - 常见的关于`async`的笔试题 ## async函数 ```js const fs = require('fs'); const readFile = function (fileName) { return new Promise(function...
## 目录 - `Generator`语法 - `yield` - `yield *`表达式 - `next`方法的参数 - `Generator`为什么是异步编程解决方案 - 异步应用 - `Thunk`函数 - `co`模块 JavaScript是单线程的,异步编程对于 JavaScript语言非常重要。如果没有异步编程,根本没法用,得卡死不可。 ## Generator语法 JavaScript开发者在代码中几乎普遍依赖一个假定:一个函数一旦开始执行,就会运行结束,期间不会有其他代码打断它并插入其中。但是ES6引入了一种新的函数类型,它并不符合这种运行到结束的特征。这类新的函数被称为生成器。 > 更正一下上一篇文章对Iterator对象的翻译,翻译成中文应该为迭代器。遍历是一个动词, 迭代器是名词。 执行 Generator 函数返回一个迭代器对象。先来简单回顾一下什么是迭代器对象...