Open theydy opened 5 years ago
分为标准盒模型和怪异盒模型两种 标准盒模型宽高只指内容宽高,不包括 border, padding 怪异盒模型宽高包括 context + padding + border
rem 根据 html 标签设置的 font-size 字体大小变化 em 指的一个字体大小,如果当前元素的字体是 16px,那么 1em === 16px flex
看是否设置主轴还是交叉轴为垂直, 主轴居中 justify-content 交叉轴居中 align-items
js 中所有的对象都有一个 __proto__ 属性,这个属性指向它的原型对象。 对于函数来说,如果这个函数能够作为构造函数,则这个函数也有一个 prototype 属性指向原型对象。 因为对于一个构造函数来说,通过它生成的对象实例指向的原型对象都是同一个,所以可以在这个原型对象上定义一些通用的属性和方法。 多个不同类型的对象通过 __proto__ 属性连接起来,就形成了原型链。
1. 构造函数实现继承 在子类的构造函数中通过 call, apply 调用父类的构造函数 2. 原型链实现继承 修改子类的 prototype 指向一个父类的对象实例 3. 组合继承 4. 寄生组合继承 5. class extend 实现继承
call, apply 作用在与改变函数内部的 this 指向 call, apply 在传递参数有所不同,call 只能一个一个传,apply 可以传一个数组对象
Promise 代表一个暂未完成但是在未来某个时刻会完成的异步任务, Promise 有三个状态,pending, resolved, rejected。一旦状态改变, 就不能再次改变。而且 Promise 的状态不受外部影响。 Promise 主要解决回调地狱的问题,因为 Promise.then 最后会返回一个新 Promise , 可以链式调用,所以通过 then 方法注册回调函数可以避免多层嵌套的问题。 Promise 的缺陷是,一旦开始无法取消,处于 pending 状态时不知道具体执行到哪里,只能通过回调函数捕获错误。
1. props 传参, $emit 触发事件 2. provide/inject 3. $parent, $children 获得 vm 实例进行通信 4. $refs 进行通信 5. event bus 6. vuex
碰到通用逻辑的时候,会把通用逻辑提取出来写成一个 mixin。 mixin 混入的钩子函数会比构造器写入的钩子函数早执行。
mutation 处理同步操作 action 处理异步操作或者多个 mutation 的操作
// https://stackoverflow.com/questions/42606091/change-another-module-state-from-one-module-in-vuex // 感觉万能的 stackoverflow commit('a_mutation', null, { root: true }) commit('A/a_mutation', null, { root: true }) 第三个参数传 { root: true }
// https://zhuanlan.zhihu.com/p/26710831 这个问题有点类似 webpack 中如何处理 code splitting code splitting 有俩点 1. 分离业务代码和第三方库( vendor ) 2. 按需加载(利用 import() 语法) 那么针对第 1 点来说,有以下方法 1. 在 entry 中增加一个入口 { entry: { app: './src/main.js', vendor: ['vue', 'axios'] }} 这样就会把 vue, axios 的第三方库独立打包出一个 vendor 但是这样实际上 entry chunk 中还是有 vue, 和 axios,所以还要配合 CommonsChunkPlugin 插件使用, 这个插件会把依赖 2 次及以上的模块移到 vendor 这个 chunk 里面。
webpack 配置项中有一个 mode 选项,可配置的有 production development 两个选项 然后通过 process.env.NODE_ENV 判断引入哪一块的配置文件 一般会配合 webpack.DefinePlugin 使用
吧啦吧啦,Object.defineProperty 和 重写数组变异方法
发布-订阅模式
电话面试
一面