1. 快速居中对齐
.parent{
dispalay:flex;
}
.son{
margin:auto;
}
2. padding与margin有什么不同?
作用对象不同,padding是对自身的内边距,margin是作用外部对象的外边距
3. %与vw有什么不同?
%有继承关系(父级) , vw只和设备的宽度有关系
4.行内元素与块级元素的区别
块级元素默认占满一行,宽度继承父级
行内元素的宽高由内容决定,没有宽高内边距和外边距
5.支持小字体?
谷歌浏览器默认支持12px,可以通过缩放来实现
.small-font{
transform: scal(0.8); // 12px的0.8倍
-webkit-transform: scal(0.8);
}
6.let和var的区别
1.var声明提升 2.var没有局部作用域 3.var声明覆盖
7. 深拷贝与浅拷贝
拷贝之后的数据不会影响原来的数据就是深拷贝,如果有影响就是浅拷贝
- 基本数据类型
let a=10;
let b=a;
console.log(b); // 10 ,这叫做赋值,非要说就叫深拷贝
- 引用数据类型,数组与对象的赋值叫做浅拷贝
let arr1 = [1,2,3];
let arr2 = arr1;
arr2.push(4);
console.log(arr1,arr2); // [1,2,3,4] [1,2,3,4]
- 解构赋值对一维的数据可以看做是深拷贝,对多维的数据是浅拷贝
let arr1 = [1,2,3];
let arr2 = [...arr1];
arr2.push(4);
console.log(arr1,arr2); // [1,2,3] [1,2,3,4]
let arr1 = [[1,2,3],[4,5]];
let arr2 = [...arr1];
arr2[0].push(888);
console.log(arr1,arr2); // [[1,2,3,888],[4,5]] [[1,2,3,888],[4,5]]
- 深拷贝
let obj = [{id:1},{id:2},{id:3}];
let obj1 = JSON.parse(JSON.stringify(obj)); // function => "function" 会有问题
// 1.运行代码(第一层)
// 2.容错代码(第二层)
// 3.提示代码(维护代码)(第三层)
function deepCopy(source) {
if (!source || typeof source !== "object") return source;
const targetObj = source.constructor === Array ? [] : {}; // 提示代码
for (let keys in source) {
if (source.hasOwnProperty(keys)) {
if (source[keys] && typeof source[keys] === "object") {
// targetObj[keys] = source.constructor === Array ? [] : {}; // 提示代码
// 递归
targetObj[keys] = deepCopy(source[keys]);
} else {
// 基本数据类型直接赋值
targetObj[keys] = source[keys];
}
}
}
return targetObj;
}