![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
js
文章平均质量分 76
王三六
喜欢前端这个行业,希望结交一些前端路上有梦想的伙伴。
展开
-
一篇看懂web端音频
MediaRecorder出现得比较早,只不过Safari/Edge等浏览器一直没有实现,所以兼容性不是很好2.WebRTC的getUserMedia结合AudioContext(目前主流方案)WebRTC已经得到了所有主流浏览器的支持。Web Audio API 是 HTML5 提供的一组 JavaScript 接口,用于在 Web 上处理和合成音频。原创 2023-07-07 15:47:20 · 991 阅读 · 0 评论 -
一篇文章搞懂Typescript
TypeScript 是一种由微软开发的自由和开源的编程语言。它是 JavaScript 的一个超集,而且本质上向这个语言添加了可选的静态类型和基于类的面向对象编程。简而言之,TypeScript是JavaScript的超集,具有可选的类型并可以编译为纯JavaScript。从技术上讲TypeScript就是具有静态类型的 JavaScript。......原创 2022-08-08 10:29:04 · 732 阅读 · 1 评论 -
前端面试题总结
一、前端登录案例和实现1.Cookie + Session用户首次登录时,输入账号和密码登录,服务端验证账号和密码无误后,会创建sessionid,然后将该sessionid保存到session中,服务器端响应这个http请求,通过set-cookie,将sessionid写入到cookie中,后续访问请求都会携带的cookie中的id,服务端比对cookie中的sessionid和session中的id是否一致进行验证。由于 SessionId 存放在 Cookie 中,所以无法避免 CSRF原创 2021-05-09 20:37:10 · 2678 阅读 · 6 评论 -
JS中的面向对象
一、介绍1.编程思想有三种:面向过程编程POP:分析出问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候再一个一个的依次调用就可以。面向对象编程OOP:把事物分解成一个个对象,然后由对象分工与合作,每一个函数,一定会有一个原型,属性的选择性放在实例化的对象中,函数写在原型上函数式编程FP:把现实世界 的事物和事物之间的联系抽象到程序里,用来描述数据之间的映射,相同的输入始终要得到相同的输出。2.优点:具有灵活性,代码可服用,容易维护和开发3.面向对象的特性:封装性原创 2021-04-27 21:31:57 · 2559 阅读 · 0 评论 -
数组和对象的浅克隆和深克隆
(1)浅克隆:只克隆数据/对象的第一层级内容开辟新的堆内存,而第二层及以下的内容则直接引用(使用原来第二层级以下层级的堆内容),如果对其克隆后的对象二层级及以下层级进行修改时,原对象也会跟着被修改。实现浅克隆for(letkeyinobj){if(!obj.hasOwnProperty(key))break;obj1[key]=obj[key]}展开运算符letobj2={...obj1}Object.assign()(...原创 2021-04-27 09:14:40 · 417 阅读 · 0 评论 -
手写Promise源码
一、编写步骤分解介绍*1.Promise就是一个类,在执行这个类的时候,需要传递一个执行器进去,执行器会立即执行*2.Promise中有三种状态:成功fulfilled失败rejected等待pending* pending->fulfilled调用:resolve* pending->rejected调用:reject* 一旦状态确定就不可更改*3.then方法内部做的事就是判断状态,如果成功,调用成功...原创 2021-04-12 17:31:03 · 319 阅读 · 1 评论 -
宏任务和微任务讲解
一、概念1.宏任务MacroTask:消息队列(回调队列)中的任务称为宏任务,是由宿主环境(浏览器或者node)提供的,不断的从消息队列中取出并被事件循环执行,宏任务在执行时,他不能获取到任务外的上下文。宏任务包含:script (可以理解为外层同步代码),setTimeout/setInterval,setImmediate(node),requestAnimationFrame,I/O,UI rendering。2.微任务microTask:在当前主线程任务结束之后就立即执行,会在当原创 2021-04-11 21:26:49 · 570 阅读 · 0 评论 -
Promise详解
一、发展直接使用传统回调方式去完成复杂的异步流程,无法避免大量的函数嵌套,就会导致函数回调地狱问题,为了避免回调地狱问题,CommonJS社区提出了promise规范,目的就是为异步编程一共一种更合理更强大的解决方案,后来在ES2015中被标准化,成为语言规范,也就是ES6中的promise对象。二、概念Promise对象用于异步操作,表示一个尚未完成且预计在未来完成的异步操作。异步过后会返回成功或者失败两个状态。promise中的resolve就是将pending变成fulfilled(未原创 2021-04-11 16:49:55 · 357 阅读 · 2 评论 -
for循环的最优使用
在for循环中,你可以循环取得数组或是数组类似对象的值,比如arguments和HTMLCollection对象。我们一般情况下使用for循环是这样,如下:for (var i = 0; i < myarray.length; i++) { // 循环体}这种形式的循环在每次循环的时候数组的长度都要去获取下。这会降低你的代码,尤其当myarray不是数组,而是一个HTMLCollection对象的时候。HTMLCollections指的是DOM方法返回的对象,例如:...原创 2020-06-03 19:13:15 · 476 阅读 · 0 评论 -
JavaScript变量优化点
JavaScript通过函数管理作用域。在函数内部声明的变量只在这个函数内部,函数外面不可用。另一方面,全局变量就是在任何函数外面声明的或是未声明直接简单使用的。 每个JavaScript环境有一个全局对象,当你在任意的函数外面使用this的时候可以访问到。你创建的每一个全部变量都成了这个全局对象的属 性。在浏览器中,方便起见,该全局对象有个附加属性叫做window,此window(通常)指向该全局对象本身。一、创建和访问全局变量创建:myName = "wth...原创 2020-05-26 11:49:07 · 325 阅读 · 0 评论 -
前端js防抖和节流怎么玩
一、应用场景 在前端开发的过程中,我们经常会需要绑定一些持续触发的事件,如 resize、scroll、mousemove 等等,但有些时候我们并不希望在事件持续触发的过程中那么频繁地去执行函数。二、防抖(debounce) 所谓防抖,就是指触发事件后在 n 秒内函数只能执行一次,如果在 n 秒内又触发了事件,则会重新计算函数执行时间。 ...原创 2020-04-28 09:04:03 · 1031 阅读 · 0 评论 -
addEventListener()与removeEventListener(),追加监听事件和删除监听事件
一、addEventListener()与removeEventListener()用于追加事件和删除追加。所有的DOM节点中都包含这两种方法,并且它们都接受3个参数:要处理的事件名、作为事件处理程序的函数和一个布尔值。最后这个布尔值参数是true,表示在捕获阶段调用事件处理程序;如果是false,表示在冒泡阶段调用事件处理程序。默认为false;1.要在按钮上为click事件添加事件处理...原创 2020-04-23 09:37:49 · 3993 阅读 · 1 评论 -
面向对象及闭包
封装var Book = function(id,bookname,price){ this.id=id; this.bookname=bookname; this.price=price;}Book.prototype = { display:function(){ console.log(this.bookname) }}var book=new Book(1,'javascript',10...转载 2018-04-26 10:55:09 · 361 阅读 · 0 评论