css选择器权重
依次递增
- 通配符选择器* 权重为0
- 标签、伪元素选择器 (例如,
h1)和伪元素(例如,::before) - 类、伪类、属性选择器;类(例如,
.example),属性选择器(例如,[type="radio"])和伪类(例如,:hover) - id 选择器
- style 内联
- !important
http和https区别
- http 明文传输,数据未加密,安全性差,https数据加密,需要协议证书,安全性好
- http端口是80,https是443
- HTTP 页面响应速度比 HTTPS 快,主要是因为 HTTP 使用 TCP 三次握手建立连接,客户端和服务器需要交换 3 个包,而 HTTPS除了 TCP 的三个包,还要加上 ssl 握手需要的 9 个包,所以一共是 12 个包。
- HTTPS 其实就是建构在 SSL/TLS 之上的 HTTP 协议,所以,要比较 HTTPS 比 HTTP 要更耗费服务器资源。
es6有哪些浅拷贝方法
- ...扩展操作符 第一级属性深拷贝,以后级别属性浅拷贝
let a={title:{info:"二级属性"}};
let b={...a,content:"一个教程"};
b.title.info = '二级属性都被修改了'
console.log(a.title);//{"info":"二级属性都被修改了"}
console.log(b.title);//{"info":"二级属性都被修改了"}
- Object.assign
- Object.assign()用于将所有可枚举属性的值从一个或多个源对象复制到目标对象
- Object.assign()第一级属性深拷贝,以后级别属性浅拷贝
let o ={name: {asd: '123'}}
let p = Object.assign({}, o)
p.name = '123456789'
console.log(p, o);//{name: "123456789"},{name: {asd: "123"}}
p.name.asd = '123456789'
console.log(p, o); // {name:{asd:"123456789"}} {name:{asd:"123456789"}}
3.slice可以截取数组中部分的元素,若参数为空,则可对数组进行浅拷贝
let a = [1,2,[1,2,3]];
let b = a.slice();
console.log(a == b); // false
a[2][1] = 11;
a[0] = 11;
console.log(a); // [ 11, 2, [ 1, 11, 3 ] ]
console.log(b); // [ 1, 2, [ 1, 11, 3 ] ]
console.log(a[2] == b[2]); // true
- concat可以对数组进行合并,若参数为空,亦可对数组进行浅拷贝
let a = [1,2,[1,2,3]];
let b = a.concat();
console.log(a == b); // false
a[2][1] = 11;
a[0] = 11;
console.log(a); // [ 11, 2, [ 1, 11, 3 ] ]
console.log(b); // [ 1, 2, [ 1, 11, 3 ] ]
console.log(a[2] == b[2]); // true
- Array.from()
let a = [1,2,[1,2,3]];
let b = Array.from(a);
console.log(a == b); // false
a[2][1] = 11;
a[0] = 11;
console.log(a); // [ 11, 2, [ 1, 11, 3 ] ]
console.log(b); // [ 1, 2, [ 1, 11, 3 ] ]
console.log(a[2] == b[2]); // true