资料内容:
一、简单页面
1、CSS 选择器样式优先级
2、CSS 实现三列布局(左右固定宽度,中间自适应)
(1)CSS 浮动
第一个 float:left,第二个 float:right,第三个设置 margin-left 和 margin-right
(2)绝对定位法
第一个定位到 left,第二个定位到 right,第三个设置 margin-left 和 margin-right
(3)flex 布局
.left{
width:200px;
或者
flex:0 0 200px;
}
.right{
width:200px;
或者
flex:0 0 200px;
}
.center{
flex:1;
}
3、如果要做优化,CSS 提高性能的方法有哪些?
内联首屏关键 CSS
异步加载 CSS
资源压缩
合理使用选择器
减少使用昂贵的属性
不要使用@import
二、js
1、防抖和节流,应用场景
防抖和节流都是防止某一时间频繁触发,但是原理却不一样。
防抖是将多次执行变为只执行一次,节流是将多次执行变为每隔一段时间执行。
防抖(debounce):
search 搜索联想,用户在不断输入值时,用防抖来节约请求资源。
window 触发 resize 的时候,不断的调整浏览器窗口大小会不断的触发这个事件,用防抖来
让其只触发一次
节流(throttle):
鼠标不断点击触发,mousedown(单位时间内只触发一次)
监听滚动事件,比如是否滑到底部自动加载更多,用 throttle 来判断2、什么是闭包
「函数」和「函数内部能访问到的变量」(也叫环境)的总和,就是一个闭包。
3、继承有哪些方法
原型链继承
借用构造函数继承(伪造对象、经典继承)
实例继承(原型式继承)
组合式继承
寄生组合继承
es6 继承 extends
4、什么是深/浅拷贝,有哪些实现方式
基本数据类型:string、number、boolean、undefined、null
引用数据类型:object、array、function
JS 数据类型分为基本数据类型和引用数据类型,基本数据类型保存的是值,引用类型保存的
是引用地址(this 指针)。浅拷贝共用一个引用地址,深拷贝会创建新的内存地址。
JSON 字符串转换为 JSON 对象:
var obj = str.parseJSON();//将 JSON 字符串转换为 JSON 对象
var obj = JSON.parse(str);// 将字符串转换为 JSON 对象
将 JSON 对象转化为 JSON 字符串:
var str = JSON.stringify(obj);
var str = obj.toJSONString();
Object.assign:对象的合并 (第一级属性深拷贝,第一级以下的级别属性浅拷贝。)
ES6 中的 Object.assign(),第一个参数必须是个空对象。
Object.assign() 方法可以把任意多个的源对象自身的可枚举属性拷贝给目标对象,然后返回
目标对象。
let obj1 = {
a: { b: 1},
c: 2
}
let obj2 = Object.assign({},obj1)
obj2.a.b = 3; //第二层,obj1 变了,是浅拷贝
obj2.c = 3; //第一层,obj1 不变,是深拷贝
console.log(obj1);
console.log(obj2);