1、new一个对象的过程?
- 开辟一个堆内存,创建一个空对象
- 执行构造函数,对这个空对象进行构造
- 给这个空对象添加__proto__属性
2、实现new操作符?
- new操作符的执⾏过程:
- 1、在函数内部创建⼀个新的空对象,
- 2、将创建好的对象的__proto__指向该函数的prototype;
- 3、执⾏构造函数中的代码,将其中的this指向当前新创建的对象,
- 4、将该对象作为函数的返回值通过return将该对象返回
3、http 和 https 的区别?
- https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
- http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
- http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
- http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
4、http状态码?
- 1xx 信息,表示临时响应并需要请求者继续执行操作
- 100:(继续) 请求者应当继续提出请求。 服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。
- 101:(切换协议) 请求者已要求服务器切换协议,服务器已确认并准备切换。
- 102:由WebDAV(RFC 2518)扩展的状态码,代表处理将被继续执行。
- 2XX 成功
- 200 表示从客户端发来的请求在服务器端被正确处理 ✨
- 201 请求已经被实现,⽽且有⼀个新的资源已经依据请求的需要⽽建⽴
- 202 请求已接受,但是还没执⾏,不保证完成请求
- 204 表示请求成功,但响应报⽂不含实体的主体部分
- 206 进⾏范围请求 ✨
- 3XX 重定向
- 301 永久性重定向,表示资源已被分配了新的 URL
- 302 临时性重定向,表示资源临时被分配了新的 URL ✨
- 303 表示资源存在着另⼀个 URL,应使⽤ GET ⽅法丁⾹获取资源
- 304 表示服务器允许访问资源,但因发⽣请求未满⾜条件的情况
- 307 临时重定向,和302含义相同
- 4XX 客户端错误
- 400 请求报⽂存在语法错误 ✨
- 401 表示发送的请求需要有通过 HTTP 认证的认证信息 ✨
- 403 表示对请求资源的访问被服务器拒绝 ✨
- 404 表示在服务器上没有找到请求的资源 ✨
- 408 客户端请求超时
- 409 请求的资源可能引起冲突
- 5XX 服务器错误
- 500 表示服务器端在执⾏请求时发⽣了错误 ✨
- 501 请求超出服务器能⼒范围,例如服务器不⽀持当前请求所需要的某个功能,或者请求是服务器不⽀持的某个⽅法
- 503 表明服务器暂时处于超负载或正在停机维护,⽆法处理请求
- 505 服务器不⽀持,或者拒绝⽀持在请求中使⽤的 HTTP 版本
5、懒加载和预加载?
- 懒加载:懒加载也叫延迟加载,延迟加载网络资源或符合某些条件时才加载资源。常见的就是图片延时加载。
- 懒加载的意义:懒加载的主要目的是作为服务器前端的优化,减少请求数或延迟请求数。
- 懒惰实现方式:
- 1.第一种是纯粹的延迟加载,使用setTimeOut或setInterval进行加载延迟.
- 2.第二种是条件加载,符合某些条件,或触发了某些事件才开始异步下载。
- 3.第三种是可视区加载,即仅加载用户可以看到的区域,这个主要由监控滚动条来实现,一般会在距用户看到某图片前一定距离遍开始加载,这样能保证用户拉下时正好能看到图片。
- 预加载:提前加载图片,当用户需要查看时可直接从本地缓存中渲染。
- 两者的行为是相反的,一个是提前加载,一个是迟缓甚至不加载。懒加载对服务器前端有一定的缓解压力作用,预加载则会增加服务器前端压力。预加载应用如广告弹窗等。
6、less和sass的区别?
1.处理方面
- Less是基于JavaScript,是在客户端处理的。
- Sass是基于Ruby的,是在服务器端处理的。
2.变量方面
- Less用@
- Sass用$
3.输出设置方面
- Less没有输出设置。
- Sass提供4中输出选项:nested, compact, compressed 和 expanded。
4.条件语句方面
- Less不支持。
- Sass支持条件语句,可以使用if{}else{},for{}循环
7、闭包?
- 闭包就是函数内部返回另一个函数,并且在外部有变量接收这个函数,就会形成闭包
- 闭包的优点:
- 1.保存变量不被销毁
- 2.保护变量不被外部作用域访问
- 闭包的缺点:
- 1.产生的闭包内存不会被销毁,容易造成内存泄露
8、http请求类型?
- GET: 通常⽤于请求服务器发送某些资源
- HEAD: 请求资源的头部信息, 并且这些头部与 HTTP GET ⽅法请求时返回的⼀致. 该请求⽅法的⼀个使⽤场景是在
- 下载⼀个⼤⽂件前先获取其⼤⼩再决定是否要下载, 以此可以节约带宽资源
- OPTIONS: ⽤于获取⽬的资源所⽀持的通信选项
- POST: 发送数据给服务器
- PUT: ⽤于新增资源或者使⽤请求中的有效负载替换⽬标资源的表现形式
- DELETE: ⽤于删除指定的资源
- PATCH: ⽤于对资源进⾏部分修改
- CONNECT: HTTP/1.1协议中预留给能够将连接改为管道⽅式的代理服务器
- TRACE: 回显服务器收到的请求,主要⽤于测试或诊断
9、==和===的区别?
- “==”:不全相等,只⽐较数据,不⽐较类型,如果两边的类型不⼀致,则会进⾏强制类型转化后再进⾏⽐较
- “===”:全等,既要⽐较数据,也⽐较数据类型,如果两边的类型不⼀致时,不会做强制类型准换,直接返回 false
10、事件冒泡和事件捕获?
- 事件冒泡(Event Bubbling)。事件从子级向父级,传递事件从触发元素开始,逐级向上传播到DOM树的最顶层,通常是document对象。
- 事件捕获(Event Capturing)。事件从父级传递向子级,事件从DOM树的根节点开始,逐级向下传播到最具体的元素