一、javascript相关
1、js的基础类型?undefined、null、number、boolean、string 引用类型 Object、array、function、data (null表示"没有对象",即该处不应该有值。undefined表示"缺少值",就是此处应该有一个值,但是还没有定义。)
2、判断数组的方式有哪些?
2.1 PS:instanceof的实现原理(判断左边对象的原型链上是否存在右边原型)
var array = []; array instanceof Array;
2.2 PS:instanceof和constructor判断的变量,必须在当前页面申明的,比如,一个页面(父页面)一样一个框架,框架中引入一个页面(子页面),在子页面中声明的array,并将其复制给父元素的一个变量,判断该变量,将返回false。
var array = []; array.constructor === Array
2.3
var array = []; array.__proto__.constructor === Array;
2.4
var array = []; Array.isArray(array);
2.5 toString(最常用)考虑Array.isArray的兼容性问题
if(!Array.isArray){ Array.isArray = function(arg){ return Object.prototype.toString.call(arg)==='[object Array]'; } } var array = []; Array.isArray(array);
3、箭头函数与普通函数的区别
1、箭头函数没有prototype属性
2、箭头函数的this指向定义时外层第一个普通函数的this
3、不能直接修改箭头函数的this
4、当箭头函数外层没有普通函数时,它的this在严格和非严格模式都是指向window。
5、箭头函数没有外层函数直接使用arguments会报错
6、箭头函数有外层函数时,arguments继承自外层函数的arguments
7、使用new调用箭头函数会报错
8、箭头函数不支持重名参数
3、面向对象
封装
继承
实现继承是指使用基类的属性和方法而无需额外编码的能力
接口继承是指仅使用属性和方法的名称、但是子类必须提供实现的能力
可视继承是指子窗体(类)使用基窗体(类)的外观和实现代码的能力
多态
覆盖、重载
4、数据结构
数组、栈、队列、链表、树、堆
5、算法
6、设计模式
二、 vue
data props methods 实例化过程 props=>data=>methods
1、 Vuex页面刷新数据丢失问题怎么解决?
使用vuex-persist插件,持久化存储的插件,直接将状态保存在cookie或者localStorege中
2、 data为什么是一个函数?
组件需要复用,组件实例都会复用data,如果data是对象会影响到其余组件
3、keep-alive的左右是什么?
缓存组件,防止页面重复渲染,提升用户体验,同时减少接口请求,减小服务器压力。
三、webpack
四个核心概念: 入口(entry)、输出(output)、loader、插件(plugins)
四、性能优化
.......
五、开发流程与部署
.......
六、浏览器兼容性
.......
七、Vue与React对比差异
https://juejin.im/post/5e153e096fb9a048297390c1
八、ES6
class 类:
九、HTTP
十、可视化
1、canvas与svg