JavaScript知识点
  p8RyuvESu2pg 2023年11月14日 58 0

宏任务、微任务

1、宏任务有:script(整体代码)、setTimeout、setInterval、I/O、页面渲染;

2、微任务有:Promise.then、Object.observe、MutationObserver。

3、执行顺序大致如下:

主线程任务——>宏任务——>微任务——>微任务里的宏任务一……——>直到任务全部完成

JSONP

1、原理:利用<script>;标签没有跨域限制的漏洞,使得网页可以得到从其他来源动态产生的JSON数据(前提是服务器支持)。

2、优点:实现简单,兼容性好。

3、缺点:仅支持get方法,容易受到XSS攻击。

nginx反向代理

1、原理:类似Node中间件服务器,通过nginx代理服务器实现。

2、实现方法:下载安装nginx,修改配置。

EventLoop事件循环

js 是一门单线程的需要,它的异步操作都是通过事件循环来完成的。整个事件循环大体由执行栈、消息队列和微任务队列三个部分组成。

同步代码会直接在执行栈中调用执行。

定时器中的回调会在执行栈被清空且定时达成时推入执行栈中执行。

promise, async异步函数的回调会被推入到微任务队列中,当执行栈被清空且异步操作完成时立即执行。

require/import之间的区别

1、require 是CommonJS语法,import是ES6语法;

2、require只在后端服务器支持,import在高版本浏览器及Node中都可以支持;

3、require引入的是原始导出值的复制,import 则是导出值的引用;

4、require时运行时动态加载,import是静态编译;

5、require 调用时默认不是严格模式,import则默认调用严格模式。

变量的赋值可以分为三个阶段

1、创建变量,在内存中开辟空间

2、初始化变量,将变量初始化为undefined

3、真正赋值

关于let、var和function:

1、let的「创建」过程被提升了,但是初始化没有提升。

2、var的「创建」和「初始化」都被提升了。

3、function的「创建」「初始化]和「赋值」都被提升了。

闭包

闭包是指有权访问另一个函数作用域中变量的函数,创建闭包的最常见的方式就是在一个函数内创建另一个函数,通过另一个函数访问这个函数的局部变量,利用闭包可以突破作用链域

闭包的特性

1、函数内再嵌套函数

2、内部函数可以引用外层的参数和变量

3、参数和变量不会被垃圾回收机制回收

JavaScript原型、原型链

1、每个对象都会在其内部初始化一个属性,就是prototype(原型),当我们访问—个对象的属性时

2、如果这个对象内部不存在这个属性,那么他就会去prototype里找这个属性,这个prototype又会有自己的prototype,于是就这样―直找下去,也就是我们平时所说的原型链的概念

3、关系:linstance.constructor.prototype=instance.__proto__

特点

1、JavaScript对象是通过引用来传递的,我们创建的每个新对象实体中并没有一份属于自己的原型副本。当我们修改原型时,与之相关的对象也会继承这一改变

2、当我们需要一个属性的时,Javascript引擎会先看当前对象中是否有这个属性,如果没有的就会查找他的Prototype对象是否有这个属性,如此递推下去,一直检索到Object内建对象

事件代理

1、事件代理(Event Delegation),又称之为事件委托。是 (JavaScript 中常用绑定事件的常用技巧。顾名思义,“事件代理”即是把原本需要绑定的事件委托给父元素,让父元素担当事件监听的职务。事件代理的原理是DOM元素的事件冒泡。使用事件代理的好处是可以提高性能

2、可以大量节省内存占用,减少事件注册,比如在table上代理所有td的click事件就非常棒

3、可以实现当新增子对象时无需再次对其绑定

Javascript实现继承

1、构造继承

2、原型继承

3、实例继承

4、拷贝继承

事件模型

1、冒泡型事件:当你使用事件冒泡时,子级元素先触发,父级元素后触发

2、捕获型事件:当你使用事件捕获时,父级元素先触发,子级元素后触发

3、DOM事件流:同时支持两种事件模型:捕获型事件和冒泡型事件

4、阻止冒泡:在W3c中,使用stopPropagation()方法;在IE下设置cancelBubble=true

5、阻止捕获:阻止事件的默认行为,例如click-<a>后的跳转。在W3c 中,使用preventDefault ()方法,在IE下设置 window.event.returnValue=false

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月14日 0

暂无评论

推荐阅读
p8RyuvESu2pg
作者其他文章 更多