摘要: 1、匹配以某字符串开头的 ID div: [id^= "item-" ] { color: red; } <div id="item-op"></div> 可匹配到 div 中 id为 item- 开头的元素 2、匹配以某字符串结尾的类名 div[class$="-btn"]:active { op 阅读全文
posted @ 2021-08-05 22:13 Leophen 阅读(1305) 评论(0) 推荐(0) 编辑
摘要: 可选链 可选链(Optional chaining) ?. 是一种以安全的方式去访问嵌套的对象属性,即使某个属性根本就不存在。 这是一项新的提案,老旧浏览器可能需要 polyfills。 一、解决的问题: 1、问题一 如果用户信息中,地址是非必填的,那我们就无法安全地访问地址的某一个属性: let 阅读全文
posted @ 2021-08-02 22:05 Leophen 阅读(1068) 评论(0) 推荐(0) 编辑
摘要: 一、什么是柯里化 Currying ——只传递给函数一部分参数来进行调用,并让它返回一个函数去处理剩下的参数。 柯里化即 Currying,是一门编译原理层面的技术,用途是实现多参函数,其为实现多参函数提供了一个递归降解的实现思路——把接受多个参数的函数变换成接受第一个参数的函数,并且返回接受剩余参 阅读全文
posted @ 2021-07-16 22:21 Leophen 阅读(424) 评论(0) 推荐(0) 编辑
摘要: 一、什么是纯函数 纯函数,即相同的输入,永远会得到相同的输出,而且没有任何可观察的副作用。 比如 slice 和 splice,这两个函数的作用并无二致——但它们各自的方式却大不同。 其中,slice 符合纯函数的定义,因为对相同的输入它保证能返回相同的输出: var xs = [1, 2, 3, 阅读全文
posted @ 2021-07-10 22:07 Leophen 阅读(251) 评论(0) 推荐(0) 编辑
摘要: 一、什么是函数式编程 函数式编程是一种编程范式,主要是利用函数把运算过程封装起来,通过组合各种函数来计算结果。 举个例子,要把字符串 functional programming is great 变成每个单词首字母大写,可以这样实现: var string = 'functional progra 阅读全文
posted @ 2021-07-06 22:35 Leophen 阅读(351) 评论(0) 推荐(0) 编辑
摘要: 原型模式——谈 Prototype 无小事 原型模式不仅是一种设计模式,它还是一种编程范式(programming paradigm),是 JavaScript 面向对象系统实现的根基。 在原型模式下,当我们想要创建一个对象时,会先找到一个对象作为原型,然后通过克隆原型的方式来创建出一个与原型一样( 阅读全文
posted @ 2021-06-25 22:54 Leophen 阅读(386) 评论(0) 推荐(0) 编辑
摘要: 上一节,学习了 Redux 的基本用法:用户发出 Action,Reducer 函数算出新的 State,View 重新渲染。 但有一个关键问题没有解决:异步操作怎么办?Action 发出以后,Reducer 立即算出 State,这是同步;Action 发出以后,过一段时间再执行 Reducer, 阅读全文
posted @ 2021-06-18 22:57 Leophen 阅读(124) 评论(0) 推荐(0) 编辑
摘要: 一、设计思想 ① Web 应用是一个状态机,视图与状态是一一对应的。 ② 所有的状态,保存在一个对象里面。 二、基本概念和 API 1、Store Store 是保存数据的地方,可以把它看成一个容器。整个应用只能有一个 Store。 Redux 提供 createStore 这个函数来生成 Stor 阅读全文
posted @ 2021-06-12 22:56 Leophen 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 一、什么是反射机制 反射机制是在编译阶段不知道是哪个类被加载,而是在运行的时候才加载、执行。 也就是说,反射机制指的是程序在运行时能够获取自身的信息。 js 中的 apply 就是反射机制。 二、Reflect 1、Reflect 定义 Reflect 是一个内建的对象,用来提供方法去拦截 Java 阅读全文
posted @ 2021-06-02 19:59 Leophen 阅读(8281) 评论(0) 推荐(0) 编辑
摘要: 一、React 的两套 API 以前,React API 只有一套,现在有两套:类(class)API 和基于函数的钩子(hooks) API。 任何一个组件,可以用类来写,也可以用函数来写。 1、类组件 class Welcome extends React.Component { render( 阅读全文
posted @ 2021-05-26 22:16 Leophen 阅读(750) 评论(0) 推荐(0) 编辑
摘要: 一、为什么使用 setState React 修改 state 方法有两种: 1、构造函数里修改 state ,只需要直接操作 this.state 即可, 如果在构造函数里执行了异步操作,就需要调用 setState 来触发重新渲染。 2、在其余的地方需要改变 state 的时候只能使用 setS 阅读全文
posted @ 2021-05-20 22:34 Leophen 阅读(380) 评论(0) 推荐(0) 编辑
摘要: 函数组件和类组件有什么不同,在编码过程中应该如何选择呢? 一、什么是函数组件 定义一个组件最简单的方式就是使用 JavaScript 函数: import React from 'react' const Welcome = (props) => { return <h1>welcome, {pro 阅读全文
posted @ 2021-05-15 22:23 Leophen 阅读(1083) 评论(0) 推荐(0) 编辑
摘要: 一般来说,项目的 TS 编译器配置全部存储在项目根目录下的 tsconfig.json 文件中 当编译器启动时,首先会读取 tsconfig.json,以获取有关如何编译项目的说明(例如,要编译哪些源文件,在哪里存储输出等) 下面介绍常见 tsconfig compilerOptions 的编译选项 阅读全文
posted @ 2021-05-11 22:05 Leophen 阅读(460) 评论(0) 推荐(0) 编辑
摘要: 使用 TypeScript 的 React 项目中,变量如果没有声明任何类型,会被识别为 any,此时编译器会报错,要求强制给变量声明类型 这里可以通过设置配置文件,使编译器在这种情况下不报错,从而实现 TS 和 JS 的混合编写↓↓ 在 React 项目中的 tsconfig.json 文件里, 阅读全文
posted @ 2021-05-08 22:40 Leophen 阅读(694) 评论(0) 推荐(0) 编辑
摘要: 在 JSX 中可以通过 onClick 这样的方式给一个元素添加一个事件处理函数,当然,在 HTML 中也可以用 onclick (小写 c),但在 HTML 中直接书写 onclick 一直就是为人垢病的写法,网页应用开发界一直倡导的是用 jQuery 的方法添加事件处理函数,直接写 onclic 阅读全文
posted @ 2021-05-06 22:33 Leophen 阅读(501) 评论(0) 推荐(0) 编辑
摘要: 一、什么是 Generator Generator 用来控制循环流程,主要解决异步编程嵌套层级较深的问题。 二、ES6 如何让遍历“停”下来 ES5 中循环一旦执行则无法停下 function loop() { for (let i = 0; i < 5; i++) { console.log(i) 阅读全文
posted @ 2021-04-23 22:28 Leophen 阅读(125) 评论(0) 推荐(0) 编辑
摘要: 一、 什么是队列 队列是一种先进先出(FIFO,First-in-first-out)的数据结构,其数据智能在队尾插入,在队首删除。 可以将队列想象成在食堂排队的人群,排在最前面的人第一个打饭,后面来的人只能在队尾排队,直到轮到他们为止。 二、队列的操作 1、入队 使用 enqueue() 方法, 阅读全文
posted @ 2021-04-15 22:25 Leophen 阅读(117) 评论(0) 推荐(0) 编辑
摘要: Proxy ES6 标准中新增——Proxy(代理),只要有 “代理” 的诉求都可以考虑使用 Proxy 来实现,例如自定义一些常用行为如查找、赋值、枚举、函数调用等。 代理类似租房找中介,而中介可以屏蔽原始信息。 一、Basic Syntax —— 基本用法 let p = new Proxy(t 阅读全文
posted @ 2021-04-06 22:41 Leophen 阅读(413) 评论(0) 推荐(0) 编辑
摘要: 单例模式——类仅有一个实例 保证一个类仅有一个实例,并提供一个访问它的全局访问点,这样的模式就叫做单例模式。 1、单例模式的实现思路 如何才能保证一个类仅有一个实例? 一般情况下,当我们创建了一个类(本质是构造函数)后,可以通过 new 关键字调用构造函数进而生成任意多的实例对象。像这样: clas 阅读全文
posted @ 2021-03-26 22:30 Leophen 阅读(756) 评论(0) 推荐(0) 编辑
摘要: 列表是一种最自然的数据组织方式,如果数据存储的顺序不重要,且无需对数据进行查找,那么列表是一种再好不过的数据结构,但对于其它一些应用,列表就显得太过简陋,我们需要一种更复杂的数据结构——栈 一、 什么是栈 栈是一种后入先出(LIFO,Last-in-first-out) 的数据结构,其数据只能在栈顶 阅读全文
posted @ 2021-03-18 21:28 Leophen 阅读(106) 评论(0) 推荐(0) 编辑