JavaScript高级
文章平均质量分 73
Coder-coco
大厂码农|毕设布道师,阿里云开发社区乘风者计划专家博主,CSDN平台Java领域优质创作者,专注于大学生项目实战开发,讲解,毕业答疑辅导,高校老师/讲师/同行合作。
展开
-
JavaScript高级(十八)---进程和线程,宏任务和微任务
微任务队列(microtask queue):Promise的then回调、 Mutation Observer API、queueMicrotask()等。宏任务队列(macrotask queue):ajax、setTimeout、setInterval、DOM监听、UI Rendering等。进程(process):计算机已经运行的程序,是操作系统管理程序的一种方式,我们可以认为,启动一个。都至少启动一个线程来执行应用程序的代码,这个线程被称为。,就会默认启动一个进程(也可能是多个进程)。原创 2024-03-19 14:53:05 · 203 阅读 · 7 评论 -
JavaScript高级(十七)---异步函数await-async
如果我们在async中抛出了异常,那么程序它并不会像普通函数一样报错,而是会作为Promise的reject来传递。链接:https://juejin.cn/post/7055533334394306574。商业转载请联系作者获得授权,非商业转载请注明出处。就是可以在它内部使用await关键字,而普通函数中是不可以的。异步函数的内部代码执行过程和普通的函数是一致的,异步函数的返回值一定是一个Promise。下也是会被同步执行。await关键字特点。原创 2024-03-19 14:51:06 · 411 阅读 · 3 评论 -
JavaScript高级(十六)---Iterator迭代器/Generator生成器
迭代器是一种特殊的对象,这个对象需要符合迭代协议(iterator protocol),这个对象具有以下特点。该对象有一个特定的next方法next() {next() {例如:创建一个迭代器对象来访问数组next方法形参是一个无参数或者有一个参数的函数,返回一个应当拥有以下两个属性的对象如果迭代器可以产生序列中的下一个值,则为 false。如果迭代器已将序列迭代完毕,则为 true。这种情况下,value 是可选的,如果它依然存在,即为迭代结束之后的默认返回值。原创 2024-03-19 14:45:47 · 695 阅读 · 1 评论 -
JavaScript高级(十五)----promise.all
例如:用户点击按钮,会向服务器请求数据,但是数据分别是不同的后端接口获取的数据,需要展示在一个span中。等待两个后端接口都返回了数据 才会将数据展示在span 中。如果用户还没请求完成 则span会显示加载中...原创 2024-03-19 14:35:03 · 177 阅读 · 0 评论 -
JavaScript高级(十四)----prmise
和race方法是类似的,any方法会等到一个fulfilled状态,才会决定新Promise的状态,如果所有的Promise都是reject的,那么会报一个AggregateError的错误。所谓的回调函数就是函数作为参数的传递,在一个函数内部调用另一个函数,调用的同时可以把内部函数的数据传递出来,他的使用场景就是异步操作,数据需要等待一段时间才能返回的情况下可以使用回调函数。如果有一个Promise有了结果,我们就希望决定最终新Promise的状态,那么可以使用race方法。Promise的三个状态。原创 2024-03-19 14:33:05 · 899 阅读 · 0 评论 -
JavaScript高级(十三)---ES6中Set,map
就不会回收该对象或者属性。对于一个普通对象,将全部引用该对象的变量关系相应设置为。强引用 JavaScript中最常见的就是声明一个变量并且将一个。WeakMap的key只能使用对象,不接受其他的类型作为key。在ES6之前,我们存储数据的结构主要有两种:数组、对象。,如果没有其他引用引用这个对象,那么GC可以回收该对象;Set是一个新增的数据结构,可以用来保存数据,WeakMap的key对对象想的引用是。只要该对象还被引用,垃圾回收机制。Set常见的属性和方法。Map常见的属性和方法。原创 2024-03-19 11:28:28 · 785 阅读 · 1 评论 -
JavaScript高级(十二)--ES6语法总结
因为当前版本的ES6是在2015年发布的,所以又称ECMAScript 2015。虽然目前并不是所有浏览器都能兼容ES6全部特性,但越来越多的程序员在实际项目当中已经开始使用ES6了。var不存在块级作用域问题,具有全局变量提示的问题存在,3.不可以使用arguments对象,该对象在函数体内不存在。2.不可以当作构造函数,也就是说,不可以使用new命令,否则会抛出一个错误。1.函数体内的this对象,就是定义所在的对象,而不是使用所在的对象。const声明一个只读的常量,一旦声明,常量的值就不能改变。原创 2024-03-19 09:24:55 · 406 阅读 · 0 评论 -
JavaScript高级(十一)--对象方法Object
返回一个布尔值,用于表示一个对象自身是否包含指定的属性,该方法并不会查找原型链上继承来的属性。返回值:一个新对象,带着指定的原型对象和属性。通过复制一个或多个对象来创建一个新的对象。冻结对象:其他代码不能删除或更改任何属性。使用指定的原型对象和属性创建一个新对象。给对象添加多个属性并分别指定它们的配置。给对象添加一个属性并指定该属性的配置。原创 2024-03-19 09:11:34 · 401 阅读 · 0 评论 -
JavaScript高级(十)----JavaScript中的类【重述原型链】!
Object是所有类的父类,它的原型是[Object: null prototype] {},事实上这个原型就是我们最顶层的原型了,从Object直接创建出来的对象的原型都是 [Object: null prototype] {}。在JavaScript其实本来没有类的概念,哪怕是ES5以后的class,严格意义上来说也只是构造函数的语法糖,之所以喜欢称之为类,因为JavaScript也可以面向对象开发。// 类的访问器,也就是Object.defineProperty中的 get 和 set。原创 2024-03-18 14:54:42 · 423 阅读 · 5 评论 -
JavaScript高级(九)---JavaScript的六种继承方式
缺点:Sub原型变成了Super的实例,如果Super的实例某个属性是引用值,该引用值就会被应用到所有Sub创建的实例中去,会有污染问题。优点:集合了【原型式继承】和【盗用构造函数继承】的优点,效率比【组合继承】更高。缺点:由于是浅克隆,所以实例共享的对象属性如果是引用值,会受污染。优点:对一个对象进行浅克隆创建另一个对象,同时继承该对象的原型属性。缺点:同【盗用构造函数继承】方法在每个实例上都要创建一遍。优点:集合了【原型继承】和【盗用构造函数继承】的优点。实现:原型继承+盗用构造函数继承。原创 2024-03-18 14:46:04 · 922 阅读 · 0 评论 -
JavaScript高级(八)---js原型链
js 继承JVM是采用了一种叫做“内存叠加”的方式,来实现继承关系的。当我们产生一个子类对象的时候,JVM是分两步走: 1、首先调用父类的构造方法,产生一个父类对象部分;2、然后再调用子类构造,在上一步的父类对象部分之下叠加上子类特有部分的内容,从而形成一个完整的子类对象。原创 2024-03-18 14:43:43 · 405 阅读 · 0 评论 -
JavaScript高级(七)--对象【包含vue2响应式原理】
对象是JavaScript中一个非常重要的概念,这是因为对象可以将多个相关联的数据封装到一起,更好的描述一个事物,JavaScript其实支持多种编程范式的,包括。通过属性描述符可以精准的添加或修改对象的属性,属性描述符需要使用 Object.defineProperty 来对属性进行添加或者修改。//for of 和for in的另外一点不同是:for of 不会遍历目标原型链上的属性。该对象的一个或多个键值对定义了将要为对象添加或修改的属性的具体配置。// 要注意 for in 会遍历原型链上的属性。原创 2024-03-18 11:06:54 · 816 阅读 · 0 评论 -
JavaScript基础知识汇总【全!】
var 变量名 = 值;// var:关键字// 变量名(标识符): 变量名由字母、数字、下划线和$组成且不能以*数字*开头,变量名不能使用关键字。中文是合法的标识符, 可以用作变量名。// 声明变量而没给赋值, 默认是undefined, undefined 是一个特殊的值, 表示‘无意义’。// 如果变量赋值的时候忘了写var 关键字, 这条语句也是有效的;// 但是不写var 不利于表达意图, 而且容易不知不觉的创建全局变量, 所以建议使用var声明变量。原创 2024-03-18 10:51:44 · 1110 阅读 · 0 评论 -
JavaScript高级(六)---with和eval函数
严格模式很好理解,是一种具有限制性的JavaScript模式,从而使代码隐式的脱离了 ”懒散(sloppy)模式“。支持严格模式的浏览器在检测到代码中有严格模式时,会以更加严格的方式对代码进行检测和执行;作用域只有全局作用域和函数作用域(块作用域暂时不提及), 使用with后有一个单独的作用域。不建议使用with语句,因为它可能是混淆错误和兼容性问题的根源。eval是一个特殊的函数,它可以将传入的字符串当做JavaScript代码来运行。原创 2024-03-18 10:24:31 · 431 阅读 · 0 评论 -
JavaScript高级(五)--柯西化函数
首先,我们参照维基百科给出的定义:在计算机科学中,柯里化(英语:Currying),又译为卡瑞化或加里化,是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术例如:// 调用sum(1,2)// 调用sum(1)(2)原创 2024-03-18 10:20:25 · 395 阅读 · 0 评论 -
JavaScript高架高级(四)---这可能是你看过的最完整的this指向
前端的初学者在学习Javascript中this指向的时候经常都会一头雾水,尤其是在ES6箭头函数出现之前。this指向之所以容易让人头疼,原因在于是在代码执行时根据环境和情况不同才决定绑定为什么值。所以本篇文章主要是介绍和总结了各种情况下的this指向,如果文中有写的不对的地方或者明显错误,还请不吝指出互相交流。原创 2024-03-18 10:09:49 · 883 阅读 · 0 评论 -
JavaScript高级(三)-令人迷惑的闭包
但是目前因为在全局作用域下add10变量对0xb00的函数对象有引用,而0xb00的作用域AO(0x200)有引用,所以最终会造成这些内存都是无法被释放的。闭包跟函数最大的区别在于,当捕捉闭包的时候,它的 自由变量 会在补充时被确定,这样即使脱离了捕捉时的上下文,它也能照常运行;结论: AO对象不会被销毁时,引用的自由变量不会被释放,没有被引用的自由变量会被释放,这里是V8引擎给我们做的一个优化。在JavaScript中,函数是一等公民,那么也就意味函数是十分灵活的,先来看看维基百科对闭包的定义。原创 2024-03-18 09:33:04 · 374 阅读 · 0 评论 -
JavaScript高架(二)-V8引擎下
这个算法是设置一个根对象(root object),垃圾回收器会定期从这个根开始,找所有从根开始有引用到的对象,对 于哪些没有引用到的对象,就认为是不可用的对象,这个算法可以很好的解决循环引用的问题。早期ECMA版本规范,每个执行上下文会被关联到一个变量对象(Varable Object),在源代码中的变量和函数声明会被作为属性添加到VO中,对于函数来说,参数也会被添加到VO(变量对象)中。当一个对象有一个引用指向它时,那么这个对象的引用就+1,当一个对象的引用为0时,这个对象就可以被销。原创 2024-03-18 09:29:19 · 840 阅读 · 0 评论 -
JavaScript高级(一)----v8引擎
我们常说的指的就是浏览器的,排版引擎(layoutengine)也称为浏览器引擎(browserengine)、页面渲染引擎(renderingengine)或样板引擎。浏览器的渲染过程浏览器会先下载HTML形成DOM树,在中途如果遇见CSS标签就开始下载CSS并解析,结合DOM树和CSS文件生成渲染树,浏览器根据渲染树,将页面绘制在屏幕上。如果在中途碰到JavaScript代码,会停止解析HTML和CSS,去执行JavaScript代码。webkit内核和JS引擎的关系WebCore。...原创 2022-07-26 14:58:28 · 1266 阅读 · 0 评论