1.chrome浏览器的多进程 多线程模型
2.session,cookie和token究竟是什么
简单来说就是HTTP协议是无状态的,所以服务端和客户端的通信要首先鉴权,在此基础上才能保持资源的共享。所以引入了session
+cookie
。session
和cookie
都是服务端生成返回给客户端的,一般是在登录那条接口的response header
里的set-cookie
中返回,客户端收到后,后续的访问请求头中都会带上该cookie
。
由于cookie
服务端不做存储,是存在客户端(浏览器)中的,所以有安全风险。当前主流方案是session
+cookie
,两者都用,
如Set-Cookie: WebSession_6CB24A92A1=b6ea492bdd3f4e0b4889313800e48f5d812fac6373fd5766f60878049df0ab1a;path=/;HttpOnly
1.session存储于服务器,可以理解为一个状态列表,拥有一个唯一识别符号sessionId,通常存放于cookie中。服务器收到cookie后解析出sessionId,再去session列表中查找,才能找到相应session。依赖cookie
2.cookie类似一个令牌,装有sessionId,存储在客户端,浏览器通常会自动添加。
3.token也类似一个令牌,无状态,用户信息都被加密到token中,服务器收到token后解密就可知道是哪个用户。需要开发者手动添加。
3.手写一个返回数据类型的函数
核心是使用Object.prototype.toString.call()
// 手写一个返回数据类型的函数
function dataType(param){
if(typeof param !=='object'){
return (typeof param)
}
let paramResult=Object.prototype.toString.call(param)
let result=paramResult.slice(8,paramResult.length-1)
return result
}
4.关于构造函数返回值的问题
参考啵雨的博客
function G() {
}
function F() {
return new G()
}
a = new F();
console.log(a);
console.log(a instanceof F);//false
function A() {
this.a = 1
return {
a: 2
}
}
A.prototype.a = 3
const a = new A()
console.log(a.a)//a等于 A函数返回的对象{a:2}
console.log(a.constructor)//Object
console.log(a.__proto__)//Object.prototype
关于构造函数:
一般构造函数不显式返回值,用户可以选择主动返回对象来覆盖正常的对象创建步骤
如果构造函数没有返回值:默认情况下 return this; 即返回创建的实例
如果返回简单数据类型:返回该实例
如果返回对象类型:返回这个对象类型,而不是实例