JavaScript
文章平均质量分 89
JavaScript
Vanghua
这个作者很懒,什么都没留下…
展开
-
WebAssembly内存结构学习记录
WebAssembly内存结构学习与研究原创 2024-09-04 22:51:57 · 1293 阅读 · 0 评论 -
节流和防抖
关于节流与防抖的额外配置的学习与实现。主要参考lodash和ahooks的leading,trailing,maxWait等配置。原创 2024-09-04 22:44:14 · 307 阅读 · 0 评论 -
WebAssembly学习记录
流程背景编译C/C++指定函数到wasm文件,为JavaScript提供计算密集型任务的高效解决方案。流程概述按照emscripten官方文档安装编译器并对C/C++打包。注:也可以编译整个C/C++文件到wasm,本流程只导出函数运行和激活编译器环境运行编译成wasm文件命令说明注:官网上提到过导出cwrap,ccall来给JavaScript调用导出的C/C++函数。但是安装最新版emscripten发现没用。指明导出的C/C++函数,函数名前需要加下划线-O指明编译优化方案,和g++中-O。原创 2024-04-25 23:18:46 · 868 阅读 · 0 评论 -
JavaScript中位运算使用技巧
个人学习记录,欢迎指正。原创 2024-03-28 22:28:32 · 518 阅读 · 0 评论 -
JavaScript数据存储与内存关系
参考https://www.zhihu.com/question/482433315/answer/2083349992https://bbs.csdn.net/topics/390355334https://hashnode.com/post/does-javascript-use-stack-or-heap-for-memory-allocation-or-both-cj5jl90xl01nh1twuv8ug0bjkhttps://zhuanlan.zhihu.com/p/362219811.原创 2022-03-01 18:03:23 · 1351 阅读 · 4 评论 -
客户端JavaScript的线程池设计
1.介绍:本打算在客户端JavaScript进行机器学习算法计算时应用线程池来优化,就像(http://playground.tensorflow.org)演示的神经网络。但是由于各种原因不了了之了。本次遇到了一个新的问题,客户端的MD5运算也是耗时操作,如果同时对多个字符串或文件进行MD5加密就可以使用线程池来优化。2.准备工作:到npm官网搜索spark-md5,到其github仓库下载spark-md5.js。该js文件支持AMD,CommonJS和web工作线程的模块系统,我们在实现线程池时,原创 2022-01-23 21:44:58 · 1615 阅读 · 0 评论 -
客户端JavaScript的IO操作应用
1.非持久的断点下载###介绍:在不关闭页面的情况下实现暂停,重传,暂停,重传…的行为。###实现思路:使用的API是fetchAPI使用AbortController来终止Promise使用可控可读流和response.blob()实现多次暂停后的数据拼接,拼接操作blob()会完成,不需要自己写额外代码请求头维护Range字段,告知服务端已接收到的字节数演示代码说明:演示代码以上传视频为例视频为mp4格式本地回路测试占用3000端口客户端代码<button onc原创 2022-01-23 21:42:13 · 1232 阅读 · 0 评论 -
客户端JavaScript的IO操作
1.本地磁盘IO----"点击"读取1.1 创建FileReader对象FileReader对象是用于IO操作中的读取操作let fd = new FileReader()1.2 利用FileReader对象读取文件fd.readAsArrayBuffer() 异步读取一个文件,返回ArrayBufferfd.readAsBinaryString() 异步读取一个文件,返回二进制形式fd.readAsDataURL() 异步读取一个文件,返回Base64编码形式fd.re原创 2022-01-21 13:17:06 · 2263 阅读 · 0 评论 -
JavaScript数值类型存储方式
参考:https://irem.univ-reunion.fr/IMG/pdf/ieee-754-2008.pdf (官方文档)参考章节:3.3,3.4,3.5,4.3.11.1 IEEE754 存储标准1. IEEE 754 64位标准下的各部分取值情况64位SEM+∞020470-∞120470NaN1或02047不全为0+0000-0100非规格化数1或00不全为0规格化数1或01到204.原创 2021-12-27 17:47:44 · 878 阅读 · 0 评论 -
数据深拷贝和浅拷贝
1.Object.assign和扩展操作符实现对象浅拷贝1.1 Object.assign拷贝效果Object.assign(target, …sources)设target为目标对象,sources为源对象。复制自有可枚举属性浅复制复制符号属性同名属性覆盖let obj = Object.create({ name: "Danny" }) // 1.复制自有属性Object.defineProperty(obj, "grade", { // 1.复制可枚举属性 enumerab原创 2021-12-23 21:40:39 · 416 阅读 · 0 评论 -
数据类型转换
1.强制类型转换的规则1.1 数值数值转换为数值转换为字符串转换为布尔值0无“0”false-0无“0”false1(有限,非0,非NaN数值)无“1”trueInfinity无“Infinity”true-Infinity无“-Infinity”trueNaN无“NaN”false1.2 字符串字符串转换为数值转换为字符串转换为布尔值“” (空字符串)0无false“1原创 2021-12-22 20:13:29 · 504 阅读 · 0 评论 -
数据类型检测
1.typeof操作符1.1 typeof操作符的使用(判断8种基本类型 + 2特殊情况) typeof用于判断8种基本类型,返回值是字符串,是基本类型的小写。有两种特殊情况,第一是null返回“object”,第二是函数返回“function”。由于function的特殊存在,typeof操作符可以判断9种类型。xtypeof x数值或NaN或Infinity“number”字符串“string”true 或 false“boolean”符号“symbo原创 2021-12-22 10:43:45 · 1208 阅读 · 0 评论 -
ES6+新增的常用知识点
注:由于ES6之后的标准变化不大,因此在此将ES6及之后标准发生的变化在此一起总结1.变量声明——let和const(作用域) let和const是块级作用域,var是函数作用域(变量提升) var声明变量存在变量提升(暂时性死区) let和const声明变量存在暂时性死区(重复声明) var声明的变量允许重复声明,后声明的变量覆盖先声明的变量,let和const不允许(全局变量) var在浏览器全局环境下声明的变量会自动加入全局对象的属性,不可被delete。(初始值) var和let不需原创 2021-12-01 10:37:02 · 6636 阅读 · 0 评论 -
函数式编程
1.函数柯里化1.1 函数柯里化的理解(概念) 函数柯里化指将一个接收多个参数的函数转换成一系列只接收一个参数的函数的技术。柯里化表现在这几个方面:函数返回嵌套函数都接收一个参数1.2 函数柯里化的实现// 压缩写法function curry(func, ...args) { if(args.length === func.length) return func(...args) return function(arg) { return cu原创 2021-11-22 21:34:10 · 404 阅读 · 0 评论 -
JavaScript原型链
1.原型链1.1 原型链解释:(概念) 原型链指一些原型通过__proto__指针构成的链表,一个原型链可以为想共享原型链中数据的对象服务,用于实现JavaScript中的继承机制。(原型链指针) 原型链中涉及到的指针:每个对象都有一个__proto__指针来访问对象的原型每个原型都是一个用于实现继承的对象,除了有__proto__指针之外,还有constructor指针指向构造函数每个函数都是一个对象,除了有__proto__指针之外,还有prototype指针指向与之关联的原型对象原创 2021-11-19 16:58:14 · 6107 阅读 · 1 评论 -
函数闭包机制
1.闭包理解1.1 闭包机制闭包是一种机制,是把函数中的声明的变量和函数定义时的作用域绑定到一起来解析函数的机制是闭包机制。1.2 闭包表现形式函数嵌套内部函数持有外部函数作用域的引用 (不论内函数什么时候执行,只要内函数不解除对内函数对象的引用,外函数内的栈内存不会像外函数离开执行栈一样主动清除,外函数的作用域就会一直被内函数持有)注: 为了方便本文使用,此处规定在一个一层嵌套模型中,函数内部嵌套的函数为内函数,内函数外部的函数叫外函数。2.闭包产生原因2.1 词法作用域Ja原创 2021-11-19 11:03:35 · 585 阅读 · 0 评论 -
面向对象编程
1.对象创建1.1 工厂模式简述:创建一个工厂函数,在其中创建一个新对象(一般通过Object构造函数创建),然后再扩展这个对象的属性。// 工厂模式function Student(name, gender, age) { let object = new Object() object.name = name object.gender = gender object.age = age object.show = function() {原创 2021-11-17 21:05:14 · 368 阅读 · 0 评论 -
垃圾回收机制
1.垃圾处理注意事项1. JS都是值传递: 不管是函数传参数还是赋值操作都是值传递,会在栈内存中重新开辟一块空间。如果是对象赋值,不会获得这个对象的引用,不能完全控制原对象,只能在栈内存中重新开辟一个空间,存储指向堆内存中该对象的地址。2. 执行栈出栈一定清空局部变量: 执行栈相当于一块内存单元,执行上下文入栈并创建局部变量会占用执行栈中的内存,当执行上下文出栈时其中所有的栈内存都会被释放。出栈相当于清空一段内存。3. 回收机制是针对堆内存: 不管是下面提到的标记清理还是引用计数,处理的对象都是堆内存原创 2021-11-12 16:13:59 · 1382 阅读 · 0 评论 -
Javascript异步编程
1.异步编程的实现方法回调函数promisegenerator2.Promise2.1介绍Promise总体上讲:Promise是异步操作的结果(从then角度来介绍)Promise可以用来解决多层回调嵌套,用链式表达回调,容易理解和阅读Promise可以用于解决回调函数中的错误,多层回调嵌套中的错误难以传播到发起者,用Promise中的catch容易解决Promise表示一次异步计算的结果,不能用于多次异步计算2.2根据PromiseA+规范实现Promiseclass Prom原创 2021-10-10 16:11:36 · 135 阅读 · 0 评论