let a = [1, 2 ,3]
let b = a;
b[2] = 9
问:让b改变,a不改变
答案: 深拷贝
v-if v-show 区别
v-if 直接操作dom节点是否在dom树中,v-show控制css的display属性
兄弟组件间通信
利用父页面作为中介用$emit传递;
bus
缓存有几种以及区别
localStore,cookie,session。
localStore: 5M,不可跨域,需要手动删除,不然永久保存
cookie: 4k,可跨域
session:服务器端用,时效短
indexDB
冒泡排序
、、、
var a = [1, 3, 2, 5, 4]
function fun4 (arr) {
for (var i = 0; i < arr.length; i++) {
for (var j = 0; j < arr.length - 1 - i; j++) {
if(arr[i] > arr[i+1]) {
var temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
}
}
}
return arr;
}
、、、
行、块元素,水平垂直居中
https://blog.youkuaiyun.com/sinat_17775997/article/details/77547481?utm_source=blogxgwz2
清除浮动
https://www.cnblogs.com/nxl0908/p/7245460.html
sass 使用
嵌套、$变量、@import、定义混合指令 @mixin且@include引用混合样式
描述队列和栈
http://www.cnblogs.com/zhangfuxiao/p/9416272.html
对象的深浅拷贝
深拷贝
function cloneObject (obj) {
var newObj = {} //如果不是引用类型,直接返回
if (typeof (obj) !== 'object') {
return obj
}
// 如果是引用类型,遍历属性
else{
for (var attr in obj) {
// 如果某个属性还是引用类型,递归调用
newObj[attr] = cloneObject(obj[attr])
}
}
return newObj
}
浅拷贝就是赋值
两栏布局做定宽右自适应
https://blog.youkuaiyun.com/jiang_my/article/details/74219777
实现三个盒子平分浏览器
1.浮动 + 按百分比33.3%;
2. 父级display:table + 子级table-cell
3. 父级display:flex + 子级flex: 1
数组去重
https://mp.weixin.qq.com/s/LgiGv8B-U_GRLqUps_BIpg
对象中的key是否可变
可以
兼容性问题
https://blog.youkuaiyun.com/wendy0818/article/details/53575132
vue路由拦截
beforeEach(to,from,next)
afterEach(to,from,next)
vue生命周期
beforeCreate
created
beforeMount
mounted
beforeUpdate
updated
beforeDestroy
destroyed
原生js实现双向绑定
https://www.jianshu.com/p/e8df6e3f6e34
遍历二叉树
用过哪些打包构建工具,用到哪些功能
webpack ,gulp
关于 vue 不能 watch 数组变化 和 对象变化的解决方案参考文章
-
vue无法监听数组变化的情况
- 利用索引直接设置数组时,eg:arr[2] = newValue
- 修改数组长度时,eg:arr.length = newLength
-
vue无法监听数据变化的解决方案
- 修改数组时对该数组使用this.$set(arr, index, newVal);
- 使用splice方法
- 用临时变量直接赋值,原理与直接赋值数组一样
data () { return { watchArr: [{ name: 'krry', }], }; }, watchArr (newVal) { console.log('监听:' + newVal); }, created () { setTimeout(() => { let temp = [...this.watchArr]; temp[0] = { name: 'xiaoyue', }; this.watchArr = temp; }, 1000); },
-
vue不能监听对象属性的添加、修改、删除
-
vue监听对象属性的解决方法
- 使用 this.$set(object, key, value)
- 使用Object.assign(),直接赋值的原理监听(最推荐)
this.watchObj = Object.assign({}, this.watchObj, { name: 'xiaoyue', age: 15, });
vue怎样缓存一个组件,不被销毁
- keep-alive
vue-router传值有几种方式,分别是什么,怎么获取传过来的参数
vue-router路由的钩子函数以及用途
vue内置组件
- component
- transition
- transition-group
- keep-alive
- slot
flex布局[参考地址](https://blog.youkuaiyun.com/weixin_42554311/article/details/88180738)
弹框水平垂直定位
ES6
- promise 和 ajax 的优缺点
- 赋值数组
- 解构赋值
- es6新增特性