JS 微任务和宏任务
单线程和任务队列 1. 单线程就意味着,所有任务需要排队,前一个任务结束,才会执行后一个任务。如果前一个任务耗时很长,后一个任务就不得不一直等待。 2. 如果排队是因为计算量过大,CPU忙不过来,倒也算了,但是很多时候CPU是闲着的,因为IO设备(输入输出设备)很慢(比如Ajax操作从网络读取数据),不得不等着结果出来,再往下执行! 3. JavaScript语言的设计者意识到,这时主线程完全可以不管IO设备,挂起处于等待中的任务,先运...
js的new操作符到底做了什么
做了什么? 1、创建了一个空的js对象(即{}) 2、将空对象的原型prototype指向构造函数的原型 3、将空对象作为构造函数的上下文(改变this指向) 4、对构造函数有返回值的判断 怎么实现? 构造函数返回值的判断 一般情况下构造函数没有返回值,但是作为函数,是可以有返回值的。 那么在构造函数有返回值的情况下,new操作符做了什么? 先看两个例子: 注意一下上面两个返回值的差异 结论: 在new的时候,会对构造函数的返回值做一些...
前端模块化规范详细总结
模块化就是将一个复杂的应用程序,按照规范拆分成几个相互独立的文件,这些文件里面完成共同的或者类似的逻辑,通过对外暴露一些数据或者调用方法,与外部整合 这样每个文件彼此独立,我们开发者更容易开发和维护代码,特别是当开发的项目越来越大,代码复杂性也不断增加,这对于模块化的需求也会越来越大 模块化主要特点是: 、 、 、 所以使用模块化可以帮我们解决什么问题呢? 解决了命名冲突 :因为每个模块是独立的,所以变量或函数名重名不会发生冲突 提高可...
说下 generator 原理
什么是 Generator: ES6 引入了 Generator 函数,可以通过 yield 关键字,把函数的执行流挂起,为改变执行流程提供了可能,从而为异步编程解决方案 如何使用 Generator: Generator 原理: Generator 函数是协程在 ES6 的实现,最大特点就是可以交出函数的执行权(即暂停执行)。 整个 Generator 函数就是一个封装的异步任务,或者说是异步任务的容器。异步操作需要暂停的地方,都用y...
ES5如何实现继承(附每种继承方式优缺点)
ES5如何实现继承(附每种继承方式优缺点) 原型链的核心只需要记住三点: 1. 每个对象都有\ \ proto\ \ 属性,该属性指向其原型对象,在调用实例的方法和属性时,如果在实例对象 上找不到,就会往原型对象上找 2. 构造函数的prototype属性也指向实例的原型对象 3. 原型对象的constructor属性指向构造函数 ·一. 原型链继承 继承的原理很简单,直接让子类的原型对象指向父类实例,当子类实例找不到对应的属性和方法时...
JS中0.1+0.2为什么不等于0.3
0.1+0.2 的计算过程计算过程 1、十进制转成二进制 在JS内部所有的计算都是以二进制方式计算的。 所以运算 0.1+ 0.2 时要先把 0.1和 0.2 从十进制转成二进制。 0.1转化成二进制的算法: 0.1 2=0.2======取出整数部分0 0.2 2=0.4======取出整数部分0 0.4 2=0.8======取出整数部分0 0.8 2=1.6======取出整数部分1 0.6 2=1.2======取出整数部分1...
从如何使用到如何实现一个Promise
promise是什么?主要用来解决什么问题? Promise是异步编程的一种解决方案,比传统解决方案–回调函数和事件–更合理更强大。 特点: (1)对象的状态不受外界影响。 对象代表一个异步操作,有三种状态: (进行中), (已成功)和 (已失败)。只有异步操作的结果,可以决定当前是哪一种状态,任何其它操作都无法改变这个状态。这也是 (承诺)这个名字的由来。 (2)一旦状态改变,就不会再变,任何时候都可以得到这个结果。 对象的状态改变,...
你知道的前端性能优化手段有哪些
个人认为,所谓的前端优化,核心都是在围绕两个点,如何让静态资源(HTML\\CSS\\JS\\图片\\音视频等)更快的发送到浏览器,如何让浏览器更快的渲染这些元素 让浏览器更快的下载资源 合理利用缓存 本地数据缓存:cookie、localStorage 内存缓存:浏览器内存缓存、代码中常用数据可以放到内存中 Cache API :PWA、ServiceWorker HTTP 缓存:强缓存、协商缓存 Push Cache :HTTP2....
说下事件模型
说下事件模型 1\. 什么是事件和事件流 javascript 是事件驱动型语言。当用户在网页中进行某种操作时,就产生了一个“事件”(Event)。当事件发生时,JavaScript 可以对之做出响应,具体如何响应某个事件由编写的事件处理函数完成。 事件流描述的就是从页面中接收事件的顺序,早期 IE 和 Netscape 提出了完全相反的事件流概念,IE 事件流是 ,而Netscape的事件流就是事件捕获。 2\. 冒泡和捕获的区别,触...