摘要: 数据结构和算法本身解决的是“快”和“省”的问题,即如何让代码运行得更快,如何让代码更省存储空间。所以,执行效率是算法一个非常重要的考量指标。那如何来衡量你编写的算法代码的执行效率呢?这里就要用到我们今天要讲的内容:时间、空间复杂度分析。 为什么需要复杂度分析? 首先,我可以肯定地说,你这种评估算法执 阅读全文
posted @ 2018-11-29 16:03 快乐~ 阅读(19522) 评论(2) 推荐(6) 编辑
摘要: 前端框架解决的根本问题就是数据和ui同步的问题,vue很好的额解决了那个问题。也就是Vue.js 一个核心思想是数据驱动。所谓数据驱动,是指视图是由数据驱动生成的,我们对视图的修改,不会直接操作 DOM,而是通过修改数据。通过分析来弄清楚模板和数据如何渲染成最终的 DOM。 new Vue 发生了什 阅读全文
posted @ 2018-11-29 11:51 快乐~ 阅读(916) 评论(0) 推荐(0) 编辑
摘要: 细节流程图 初始化 计算属性的初始化是发生在 Vue 实例初始化阶段的 initState 函数中,执行了 if (opts.computed) initComputed(vm, opts.computed),initComputed 的定义在 src/core/instance/state.js 阅读全文
posted @ 2018-11-29 11:49 快乐~ 阅读(345) 评论(0) 推荐(0) 编辑
摘要: $watch 实际上无论是 $watch 方法还是 watch 选项,他们的实现都是基于 Watcher 的封装。首先我们来看一下 $watch 方法,它定义在 src/core/instance/state.js 文件的 stateMixin 函数中,如下: 侦听属性的初始化也是发生在 Vue 的 阅读全文
posted @ 2018-11-29 11:48 快乐~ 阅读(2206) 评论(0) 推荐(0) 编辑
摘要: 收集的目的就是为了当我们修改数据的时候,可以对相关的依赖派发更新,那么这一节我们来详细分析这个过程。 setter 部分的逻辑: 假设我们有如下模板: 我们知道这段模板将会被编译成渲染函数,接着创建一个渲染函数的观察者,从而对渲染函数求值,在求值的过程中会触发数据对象 name 属性的 get 拦截 阅读全文
posted @ 2018-11-29 11:47 快乐~ 阅读(314) 评论(0) 推荐(0) 编辑
摘要: 主线程的执行过程就是一个 tick,而所有的异步结果都是通过 “任务队列” 来调度被调度。 消息队列中存放的是一个个的任务(task)。 规范中规定 task 分为两大类,分别是 macro task 和 micro task,并且每个 macro task 结束后,都要清空所有的 micro ta 阅读全文
posted @ 2018-11-29 11:47 快乐~ 阅读(208) 评论(0) 推荐(0) 编辑
摘要: Vue 会把普通对象变成响应式对象,响应式对象 getter 相关的逻辑就是做依赖收集,这一节我们来详细分析这个过程 Dep Dep 是整个 getter 依赖收集的核心,它的定义在 src/core/observer/dep.js 中 import type Watcher from './wat 阅读全文
posted @ 2018-11-29 11:46 快乐~ 阅读(916) 评论(0) 推荐(0) 编辑
摘要: Object.defineProperty Object.defineProperty 方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性, 并返回这个对象,先来看一下它的语法: obj 是要在其上定义属性的对象; prop 是要定义或修改的属性的名称; descriptor 是将被定 阅读全文
posted @ 2018-11-29 11:45 快乐~ 阅读(929) 评论(0) 推荐(0) 编辑
摘要: 写了一段时间ts,在从头学习一遍,温故而之新 ts的一些技巧 1、巧用注释 通过/ /形式的注释可以给 TS 类型做标记,编辑器会有更好的提示: 2、巧用注释 进阶 注释有很多规范的字段,基本和 JSDOC 一致。但不用着急翻文档,在 / / 里输入 @ 就可以看到丰富的选择 3、巧用 typeof 阅读全文
posted @ 2018-11-29 11:42 快乐~ 阅读(1697) 评论(0) 推荐(0) 编辑
摘要: 递归 本质上,将原来的问题,转化为更小的同一个问题 生活中递归的例子 周末你带着女朋友去电影院看电影,女朋友问你,咱们现在坐在第几排啊?电影院里面太黑了,看不清,没法数,现在你怎么办? 别忘了你是程序员,这个可难不倒你,递归就开始排上用场了。于是你就问前面一排的人他是第几排,你想只要在他的数字上加一 阅读全文
posted @ 2018-11-29 11:36 快乐~ 阅读(991) 评论(0) 推荐(0) 编辑
摘要: 常用的链表结构 单链表 双向链表 空间换时间 循环链表 链表的删除/插入是O(1)级别的,但是随机访问需要O(n)的复杂度 双向循环链表 技巧 理解指针或引用的含义 将某个变量赋值给指针,实际上就是将这个变量的地址赋值给指针,或者反过来说,指针中存储了这个变量的内存地址,指向了这个变量,通过指针就能 阅读全文
posted @ 2018-11-29 11:30 快乐~ 阅读(199) 评论(0) 推荐(0) 编辑