随笔分类 - JS
装饰器
摘要:Decorator 装饰器 前言 大家在前端开发过程中有遇到过 @ + 方法名 这种写法吗?当我第一次看到的时候,直接懵了,这是什么东东…… 遇到困难解决困难,在我的一番查找后,我知道了,原来这东西叫装饰器,英文名叫 Decorator,那它到底是干什么的呢?接下来就让我跟大家说道说道~ 什么是装饰
阅读全文
web worker 使用场景
摘要:我们都知道 js是单线程模型。也就是说一次只能处理一件事情,前面的事情没有完毕,后面的事情要等待前面的事情处理完毕后才能执行。 随着多核CPU的出现,我们可以最大限度的利用cpu多核,来提高js的性能。Worker接口可以创建后台任务,即可以给js运行新增线程。 用于处理一些耗时、耗费性能的任务(异
阅读全文
requestAnimationFrame
摘要:###requestAnimationFrame作用 告诉浏览器您希望执行动画并请求浏览器在下一次重绘之前调用指定的函数来更新动画。该方法将回调作为要在重绘之前调用的参数 requestAnimationFrame是浏览器用于定时循环操作的一个接口,类似于setTimeout,主要用途是按帧对网页进
阅读全文
深度剖析-事件循环event
摘要:
阅读全文
前端将json数据导出为Excel文件
摘要:```js downloadMater(exportList) {//导出文章ID函数 const defaultCellStyle = { font: { name: "Verdana", sz: 11, color: "FF00FF88" }, fill: { fgColor: { rgb: "FFFFAA00" } } }; const wopts = { bookType: "xlsx",
阅读全文
websocket应用之简单的聊天室
摘要:首先按个包: 一定要基于node环境开发! socket.emit()是发送广播,仅自己可见 socket.broadcast.emit()是发送广播,除了自己不可见,其他的人都可见
阅读全文
常用的设计模式
摘要:常用的设计模式 ` let TankFactor = { tankList: { "01": function() { const img = new Image(); img.src = "./images/01.jpg"; return img; }, "02": function() { co
阅读全文
Promise、Async、await
摘要:Promise Promise 翻译过来就是承诺的意思,这个承诺会在未来有一个确切的答复,并且该承诺有三种状态,分别是: 等待中(pending) 完成了 (resolved) 拒绝了(rejected) 这个承诺一旦从等待状态变成为其他状态就永远不能更改状态了,也就是说一旦状态变为 resolve
阅读全文
Generator
摘要:Generator 算是 ES6 中难理解的概念之一了,Generator 最大的特点就是可以控制函数的执行 你也许会疑惑为什么会产生与你预想不同的值,接下来就让我为你逐行代码分析原因 首先 Generator 函数调用和普通函数不同,它会返回一个迭代器 当执行第一次 next 时,传参会被忽略,并
阅读全文
模块化
摘要:好处 解决命名冲突 提供复用性 提高代码可维护性 立即执行函数 立即执行函数 (function(globalVariable){ globalVariable.test = function() {} // ... 声明各种变量、函数都不会污染全局作用域 })(globalVariable) AM
阅读全文
继承
摘要:组合继承 组合继承是最常用的继承方式, 核心 :是在子类的构造函数中通过 Parent.call(this) 继承父类的属性,然后改变子类的原型为 new Parent() 来继承父类的函数。 优点 :在于构造函数可以传参,不会与父类引用属性共享,可以复用父类的函数 缺点 :就是在继承父类函数的时候
阅读全文
原型
摘要:一张图图能让你彻底明白原型和原型链 原型链就是多个对象通过 __proto__ 的方式连接了起来。为什么 obj 可以访问到 valueOf 函数,就是因为 obj 通过原型链找到了 valueOf 函数。 总结以下几点: Object 是所有对象的爸爸,所有对象都可以通过 __proto__ 找到
阅读全文
== vs ===
摘要:对于 == 来说,如果对比双方的类型不一样的话,就会进行类型转换 假如我们需要对比 x 和 y 是否相同,就会进行如下判断流程: 首先会判断两者类型是否相同。相同的话就是比大小了 类型不相同的话,那么就会进行类型转换 会先判断是否在对比 null 和 undefined,是的话就会返回 true 判
阅读全文
深浅拷贝
摘要:浅拷贝 1、Object.assign let a = { age: 1 } let b = Object.assign({}, a) a.age = 2 console.log(b.age) // 1 2、展开运算符 ... let a = { age: 1 } let b = { ...a }
阅读全文
this
摘要:可能会发生多个规则同时出现的情况,这时候不同的规则之间会根据优先级最高的来决定 this 最终指向哪里。 首先,new 的方式优先级最高,接下来是 bind 这些函数,然后是 obj.foo() 这种调用方式,最后是 foo 这种调用方式,同时,箭头函数的 this 一旦被绑定,就不会再被任何方式所
阅读全文
类型转换
摘要:JS 中类型转换只有三种情况,分别是: 转换为布尔值 转换为数字 转换为字符串 转Boolean 在条件判断时,除了 undefined, null, false, NaN, '', 0, -0,其他所有值都转为 true,包括所有对象。 对象转原始类型 对象在转换类型的时候,会调用内置的 [[To
阅读全文
Event Loop
摘要:进程与线程 什么是线程?讲到线程,那么肯定也得说一下进程。本质上来说,两个名词都是 CPU 工作时间片的一个描述。 进程描述了 CPU 在运行指令及加载和保存上下文所需的时间,放在应用上来说就代表了一个程序。线程是进程中的更小单位,描述了执行一段指令所需的时间。 把这些概念拿到浏览器中来说,当你打开
阅读全文
垃圾回收机制
摘要:V8 实现了准确式 GC,GC 算法采用了分代式垃圾回收机制。因此,V8 将内存(堆)分为新生代和老生代两部分。 新生代算法 新生代中的对象一般存活时间较短,使用 Scavenge GC 算法。 在新生代空间中,内存空间分为两部分,分别为 From 空间和 To 空间。在这两个空间中,必定有一个空间
阅读全文