
javascript
文章平均质量分 68
傻小胖
一个正在爬的小胖子
展开
-
requestAnimationFrame和requestIdleCallback分别是什么,是用在什么场景下
**深入解析 `requestAnimationFrame` 和 `requestIdleCallback`**原创 2025-03-24 15:50:18 · 935 阅读 · 0 评论 -
纯函数(Pure Function)概念
不会修改外部变量、参数、I/O设备或全局状态(如网络请求、文件操作等)。通过避免副作用,纯函数使代码更模块化、可维护性更高,是函数式编程的基石。,是构建可靠程序的重要基础。原创 2025-02-26 19:13:56 · 326 阅读 · 0 评论 -
前端路由 Hash 和 History 模式原理对比区别
技术选择根据项目需求选择合适的路由模式考虑浏览器兼容性要求评估服务器配置能力开发建议合理使用路由懒加载做好错误处理注意 URL 规范性维护考虑保持路由结构清晰做好文档记录考虑后续扩展性。原创 2025-01-03 14:45:57 · 1155 阅读 · 0 评论 -
axios和fetch的实现原理以及区别,与XMLHttpRequest的关系,并结合react封装统一请求示例
fetch 是现代浏览器中用来发起 HTTP 请求的原生 API,它依赖浏览器的网络堆栈来执行低级别的请求操作。通过基于 Promise 的设计,fetch 提供了更清晰的异步操作流程。它的实现利用了浏览器的网络层和异步编程机制,能够有效处理 HTTP 请求、响应、CORS 等问题。fetch 是一个现代的、基于 Promise 的 API,具有更简洁的语法和更强大的功能,如流式响应、异步操作的简化、更易于使用的错误处理等。原创 2025-01-02 17:19:48 · 833 阅读 · 0 评论 -
Object.defineProperty() 完整指南
Object.defineProperty() 方法允许精确地添加或修改对象的属性。默认情况下,使用此方法添加的属性是不可修改的。参数说明:2.2 访问器描述符3. 实际应用示例3.1 数据劫持(Vue2响应式原理)3.2 私有属性模拟3.3 计算属性实现4. 注意事项和限制4.1 不可扩展对象4.2 继承属性4.3 属性描述符限制5. 性能考虑5.1 大量属性处理5.2 访问器性能6. 最佳实践描述符默认值使用 TypeScript 类型错原创 2024-12-30 17:26:33 · 634 阅读 · 0 评论 -
React 组件通信完整指南 以及 自定义事件发布订阅系统
if (!订阅事件:通过 subscribe 方法,可以为某个事件注册一个回调函数。发布事件:通过 publish 方法,可以触发某个事件,并将数据传递给所有已订阅该事件的回调函数。取消订阅:subscribe 返回的函数可以用来取消订阅某个事件。// 使用自定义事件系统// 发布者组件});// 订阅者组件});}, []);就近原则父子组件优先使用 props兄弟组件优先通过父组件通信灵活性考虑简单场景使用 props 和回调。原创 2024-12-27 17:41:48 · 1281 阅读 · 0 评论 -
JavaScript or TypeScript防抖与节流完整指南
【代码】JavaScript or TypeScript防抖与节流完整指南。原创 2024-12-25 10:32:38 · 576 阅读 · 0 评论 -
JavaScript 高阶函数与柯里化完整指南
/ 函数组合// 函数记忆(缓存)});// 10 (从缓存中获取)柯里化是将一个多参数函数转换成一系列单参数函数的过程。提高代码复用性增加代码灵活性提供更好的抽象支持函数式编程范式根据实际需求选择合适的抽象级别平衡代码可读性和灵活性考虑团队成员的接受程度注意性能影响高阶函数:如果一个函数符合下面2个规范中的任何一个,那该函数就是高阶函数。1.若A函数,接收的参数是一个函数,那么A就可以称之为高阶函数。原创 2024-12-25 10:32:17 · 304 阅读 · 0 评论 -
JavaScript 数组方法完整指南
提高代码可读性减少代码量提升开发效率优化程序性能操作的目的返回值需求性能要求代码可读性浏览器兼容性。原创 2024-12-23 18:16:13 · 625 阅读 · 0 评论 -
vue引入luckysheet插入图表时报错Uncaught TypeError: h.createChart is not a function
Uncaught TypeError: h.createChart is not a function原创 2022-10-08 15:13:42 · 3573 阅读 · 9 评论 -
Luckysheet 在vue中离线使用方法以及引入报错解决方案
Luckysheet 在vue中离线使用方法以及引入报错解决方案原创 2022-09-26 11:21:56 · 1873 阅读 · 0 评论 -
ES6类和继承
首先看代码class Person { constructor(name){ console.log(`构造函数执行了,${name}`) }}let p1= new Person('jona')此处,调用new的时候就自动执行了构造函数,所以接收参数也是在构造函数出接收class Person { constructor(name){...原创 2018-10-31 15:52:56 · 6054 阅读 · 0 评论 -
ES6数组的其他操作arr.find(),arr.findIndex(),arr.fill() ,arr.includes()
1.arr.find():查找出第一个符合条件的数组成员,并返回该成员,如果没有找到就返回undefine let arr = [23,40,50] let res = arr.find((val,index,arr)=>{ return val >30 }) console.log(res) //返回:402.arr.findIndex() :找到的是位置,找不到...原创 2018-09-07 16:14:14 · 26095 阅读 · 0 评论 -
深拷贝和浅拷贝的区别和与原理
一、基本类型和引用类型https://blog.youkuaiyun.com/qq_34645412/article/details/104840390二、浅拷贝和深拷贝如图所示:obj2是对obj1的浅拷贝,obj2新建了一个对象,但是obj2对象复制的是obj1的指针,也就是obj1的堆内存地址,而不是复制对象本身。obj1和obj2是共用了内存地址的。obj3是对obj1的深拷贝,obj3和obj1不共享内存因此:浅拷贝只复制指向某个对象的指针,而不复制对象本身,相当于是新建了一个原创 2020-05-25 16:52:49 · 6194 阅读 · 5 评论 -
javascript中的原型与原型链
一、什么是原型原型:每一个javascript对象(除null外)创建的时候,都会与之关联另一个对象,这个对象就是我们所说的原型,每一个对象都会从原型中“继承”属性。例如var obj = new Object();创建一个对象的时候都会同时关联一个对象,如图,关联的这个对象就是新建的对象obj的原型二、prototype在JavaScript中,每个函数都有一个pr...原创 2020-05-09 17:07:46 · 23938 阅读 · 28 评论 -
基本类型和引用类型区别
1.基本类型包括:string,number,boolean,null,undefined,symbol2.引用类型包括:Function,Array,Object基本类型和引用类型也有人叫原始类型和对象类型,拥有方法的类型和不能拥有方法的类型,可变类型和不可边类型3.基本类型基本类型是按值访问的,引用类型是按引用访问3.1 基本类型的值是不可变的由于基本类型本...原创 2020-03-13 16:13:28 · 9518 阅读 · 2 评论 -
为什么double型的0.29*100让后结果是28.999999999999996
开发遇到的很奇怪的问题0.35*100 =350.29*100=28.999999999999996查了一些资料 都说是计算机存储问题。对float或double有这样的情况。前端js解决方式parseFloat((0.29*100).toPrecision(12)) //29ps:计算尽量放在后台进行,前端失精太严重...原创 2020-03-03 14:49:42 · 1490 阅读 · 0 评论 -
moment常用操作(获取当前年/季度/月/日、上一年/季度/月/日、下一年/季度/月/日、某年/月/季度的开始和结束时间...持续更新)
官网:http://momentjs.cn/docs/懒得每次查官网记录一下:当前年:moment().format("YYYY")moment().year(); // Number当前月:moment().format('MM')当前季度:moment().quarter()上一年/下一年上一年:moment().add(-1, 'y').f...原创 2019-10-30 15:23:41 · 49854 阅读 · 2 评论 -
window.location.href的用法(动态输出跳转)
javascript中的location.href有很多种用法,主要如下。self.location.href="/url" 当前页面打开URL页面location.href="/url" 当前页面打开URL页面windows.location.href="/url" 当前页面打开URL页面,前面三个用法相同。this.location.href="/url" 当前页面打开URL页原创 2017-07-25 16:14:04 · 1965 阅读 · 0 评论 -
加密方法汇总MD5.js,base64.js,aes.js,sha1.js
下载地址:https://github.com/emn178/js-sha1https://github.com/beatgammit/base64-jshttps://github.com/emn178/js-md5https://github.com/ricmoo/aes-jshttps://github.com/brix/crypto-原创 2017-08-17 10:30:13 · 2738 阅读 · 1 评论 -
箭头函数用法
总结加借鉴1、对 this 的关联。函数内置 this 的值,取决于箭头函数在哪儿定义,而非箭头函数执行的上下文环境。2 、new 不可用。箭头函数不能使用 new 关键字来实例化对象,不然会报错。3、this 不可变。函数内置 this 不可变,在函数体内整个执行环境中为常量。4、没有arguments对象。更不能通过arguments对象访问传入参数。只能使用显式命名或原创 2017-08-11 16:53:44 · 1927 阅读 · 0 评论 -
Object.assign() 方法用于将所有可枚举的属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。
Object.assign() 方法用于将所有可枚举的属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。target目标对象。sources(多个)源对象。返回值目标对象。描述Edit如果目标对象中的属性具有相同的键,则属性将被源中的属性覆盖。后来的源的属性将类似地覆盖早先的属性。Object.assign 方法只会拷贝源对转载 2017-07-27 15:42:35 · 569 阅读 · 0 评论 -
ionic生成二维码和普通页面生成二维码js
两种情况下生成二维码一致。只是在引入二维码js的时候不太一样思路:1.引入qrcode.js(下载地址http://davidshimjs.github.io/qrcodejs/)2.获取需要生成二维码的DOM节点3.在获取到的节点上设置二维码显示的大小等信息4.获取生成二维码所需的数据(也就是把什么数据生成二维码)5.生成二维码1.ionic项目中生成二维码:原创 2017-07-28 10:29:57 · 2048 阅读 · 0 评论 -
js获取数组中最小的值的方法 Math.min.apply(),apply(),call()方法使用
var arr = [1,3,6,8,2,10];var minNum = Math.min.apply(null,arr);console.log(minNum); 运行结果是:1;Math.min 可以实现得到数组中最小的一项 Math.min.apply(null,arr)其中第一个参数null,这个是因为没有对象去调用这个方法,所以直接传递null过去。同原创 2017-09-11 11:50:17 · 13624 阅读 · 0 评论 -
js中splice和slice的区别
ArrayObject.slice(start,end)返回值返回一个新的数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素。说明请注意,该方法并不会修改数组,而是返回一个子数组。如果想删除数组中的一段元素,应该使用方法 Array.splice()。var arr = new Array(6)arr[0] = "George"原创 2017-12-02 16:29:41 · 2090 阅读 · 0 评论 -
动态设置video的宽高的方法,js设置和CSS设置
一、csss设置html:class="wrap"> controls="controls" class="videoBox" #iframeurl> src="3a1be272f8b.mp4" type="video/mp4" /> css:.wrap{ width:100%; position:relative;原创 2017-11-27 20:02:47 · 27373 阅读 · 2 评论 -
原生js给DOM元素添加一个或者多个类的方法总结
先看两个例子:html: 啦啦啦css:.test{ width: 100px; height: 100px; background: #B6BAC4;}.test1{ border: 1px solid; width: 200px; border-radius: 4px;}.test2{ margin: 0 auto;}.test3{原创 2017-12-28 20:33:27 · 49543 阅读 · 4 评论 -
IE8数据$.ajax()方法请求数据,在现代浏览器中工作正常,但在 IE 8 下,会有报错:no transport
那是因为IE8的请求方法:XDomainRequest。解决方法:引入一个插件“jquery 兼容 IE 8 XDomainRequest”:直接引入就可以https://github.com/MoonScript/jQuery-ajaxTransport-XDomainRequest如果持续报错吧ajax请求每一个参数都写完整,启动一个本地服务原创 2017-12-29 17:22:57 · 3276 阅读 · 0 评论 -
node.js字符串转对象querystring.parse方法使用说明
方法说明:将字符串转成对象。说白了其实就是把url上带的参数串转成数组对象。(看例子就知道咯)语法:复制代码代码如下:querystring.parse(str, [sep], [eq], [options])接收参数:str 欲转换的字符串sep...原创 2018-04-25 23:50:30 · 12077 阅读 · 0 评论 -
获取时间(本周,上周,本月,上月)
首先此处使用的是moment.js用法:一、node用法npm install moment然后引入需要用的地方官方给出如下var moment = require('moment')我在react里面引用如下:import moment from 'moment';原理一致,只是不同框架导入方式不一样,导入即可使用 1.本周 starts ...原创 2018-07-24 09:05:54 · 10608 阅读 · 2 评论 -
js不常见的运算符用法 (>、==、&&、||)
一.大于(>)如果只有一个操作数是数值字符串,另一个数数值则转换成数值后再进行比较eg:var box = '3' > 22; //false如果两个操作数都是数值字符串,则只会比较字符串的第一个数eg:var box = '3' > '22'; //true如果两个操作数都是字符串,则比较字符的编码eg:var box = 'a' > ...原创 2019-02-27 15:56:05 · 1915 阅读 · 0 评论 -
js如何将excel导入成数组格式(以vue为例,其他框架同理)
记录经验:以vue为例~~~首先借助大佬的东西:https://github.com/SheetJS/js-xlsx1.安装xlsxnpm install xlsx2.导入为数组格式import XLSX from "xlsx"; //拿到excel的file,不同框架的方法不一样,此处的element的上传组件拿到的,<el-upload ...原创 2019-07-04 16:34:17 · 3720 阅读 · 0 评论 -
js的split()和substring ()和substr ()方法
split() 方法用于把一个字符串分割成字符串数组。stringObject.split(separator,howmany)如果把空字符串 ("") 用作 separator,那么 stringObject 中的每个字符之间都会被分割。var str="How are you doing today?"document.write(str.spl原创 2017-08-16 17:19:19 · 2309 阅读 · 0 评论