面试题总结大全

宏任务,微任务

先来了通俗易懂的例子:
去银行办理业务的人就是一个个宏任务,当宏任务P1在柜台办理业务时,其它任务都需等待,当一个宏任务P1办理业务结束时,柜台职员会询问他还有没有其它微任务,如果他还有其他业务,则其他宏任务都需等待。就是微任务是在宏任务之前执行

执行顺序:先执行同步代码,遇到异步宏任务则将异步宏任务放入宏任务队列中,遇到异步微任务则将异步微任务放入微任务队列中,当所有同步代码执行完毕后,再将异步微任务从队列中调入主线程执行,微任务执行完毕后再将异步宏任务从队列中调入主线程执行,一直循环直至所有任务执行完毕。

宏任务包括:script(整体代码), setTimeout, setInterval, setImmediate, I/O, UI rendering。

微任务包括: Promises, Object.observe, MutationObserver

js创建对象

1、new 操作符 + Object 创建对象 

2、字面式创建对象

以上两种方法在使用同一接口创建多个对象时,会产生大量重复代码,为了解决此问题,工厂模式被开发。

3、工厂模式

 工厂模式解决了重复实例化多个对象的问题,但没有解决对象识别的问题

4、构造函数模式

对比工厂模式有以下不同之处:

1、没有显式地创建对象

2、直接将属性和方法赋给了 this 对象

3、没有 return 语句

5、原型模式

原型模式的好处是所有对象实例共享它的属性和方法

6、混合模式(构造函数模式+原型模式)

混合模式共享着对相同方法的引用,又保证了每个实例有自己的私有属性。最大限度的节省了内存。

本地存储

localStorage: localStorage 的生命周期是永久的,关闭页面或浏览器之后 localStorage 中的数据也不会消失。localStorage 除非主动删除数据,否则数据永远不会消失

sessionStorage: sessionStorage 的生命周期是仅在当前会话下有效。sessionStorage 引入了一个“浏览器窗口”的概念,sessionStorage 是在同源的窗口中始终存在的数据。只要这个浏览器窗口没有关闭,即使刷新页面或者进入同源另一个页面,数据依然存在。但是 sessionStorage 在关闭了浏览器窗口后就会被销毁。同时独立的打开同一个窗口同一个页面,sessionStorage 也是不一样的

cookie: cookie生命期为只在设置的cookie过期时间之前一直有效,即使窗口或浏览器关闭。 存放数据大小为4K左右, 有个数限制(各浏览器不同),一般不能超过20个。缺点是不能储存大数据且不易读取
 

webpack 的组成部分

入口,出口,插件,装载机(loader),本地服务(devServer)

一次完整的http服务

1.对 www.baidu.com这个网址进行DNS域名解析,得到对应的IP地址
2.根据这个IP,找到对应的服务器,发起TCP的三次握手
3.建立TCP连接后发起HTTP请求
4.服务器响应HTTP请求,浏览器得到html代码
5.浏览器解析html代码,并请求html代码中的资源(如js、css、图片等) (先得到html代码,才能去找这些资源)
6.浏览器对页面进行渲染呈现给用户
7.服务器关闭TCP连接
 

json的常用方法

JSON.stringify() 把 json 对象转换成为 json 字符串
JSON.parse() 把 json 字符串转换成为 json 对象

typeof返回值

1.string类型

typeof(“abc”)

2.number类型

typeof(20);
typeof(NaN);
typeof(Infinity)

3.boolean类型

typeof(true);
typeof(false)

4.undefined类型

typeof(undefined);
typeof(a);//不存在的变量

5.object类型

对象,数组,null返回object
typeof(null);
typeof(window);

6.function

typeof(Array);
typeof(Date);

7.symbol

typeof Symbol() // ES6提供的新的类型

typeof与instanceof的区别

instanceof 运算符用来测试一个对象在其原型链中是否存在一个构造函数的 prototype 属性
使用规则:object instanceof constructor
要求前面是个对象,后面是一个构造函数。而且返回的是布尔型的,不是true就是false。

常用使用:由于typeof只能判断类型,所以,数组和对象返回的都是object,这时就需要使用instanceof来判断是否是 [] instanceof Array //true
 

事件委托

它还有一个名字叫事件代理,JavaScript高级程序设计上讲:事件委托就是利用事件冒泡,只指定一个事件处理程序,就可以管理某一类型的所有事件.

js继承

1. 原型链继承

2.构造函数继承

3.组合继承(组合原型链继承和借用构造函数继承)

4.原型式继承<

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值