- 博客(76)
- 资源 (3)
- 收藏
- 关注
原创 数组题-双指针技巧
数组没有真正意义上的指针,可以把索引当作指针。leetcode:83. 删除排序链表中的重复元素 leetcode:27. 移除元素 leetcode:283. 移动零左右指针: leetcode:167. 两数之和 II - 输入有序数组 leetcode:344. 反转字符串leetcode:5. 最长回文子串...
2022-07-11 19:46:54 513
原创 链表题--使用双指针技巧汇总
双指针技巧解决链表题汇总 leetcode:23. 合并K个升序链表 (常考) 剑指 Offer 22. 链表中倒数第k个节点 leetcode:19. 删除链表的倒数第 N 个结点 leetcode:876. 链表的中间结点 leetcode:142. 环形链表 II leetcode:160. 相交链表...
2022-07-07 17:35:31 420
原创 setTimeout和setInterval相互实现
setInterval在执行完一次代码之后, 经过了那个固定的时间间隔, 它还会自动重复执行代码, 而setTimeout只执行一次那段代码。带清除定时器版本3、利用setInterval实现setTimeout4、扩展思考:为什么要用 setTimeout 模拟实现 setInterval?setInterval 的缺陷是什么?这里只做粗略回答:定时器指定的时间间隔,表示的是何时将定时器的代码添加到消息队列,而不是何时执行代码。所以真正何时执行代码的时间是不能保证的,取决于何时被
2022-06-29 15:07:05 828
原创 Javascript - Promise的实现过程
一、认识PromisePromise是一个类,可以翻译成 承诺、许诺 、期约当我们需要给予调用者一个承诺:待会儿我会给你回调数据时,就可以创建一个Promise的对象二、Promise的状态 待定(pending) 完成(fulfilled) 拒绝(rejected) 一旦状态被确定下来,Promise的状态会被 锁死,该Promise的状态是不可更改的三、其他promise的API建议自己查询文档,本文只注重功能的实现四、代码实现步骤:1、代码结构的...
2021-12-16 16:39:29 1216
原创 JavaScript-深拷贝函数的实现
1、常见的一种实现方式const info = JSON.parse(JSON.stringify(obj))2、简单实现 deepClone//工具函数function isObject(value) { const type = typeof value return (value !== null) && (type === 'object' || type === 'function')}function deepClone(originVal
2021-12-15 11:49:25 1333
原创 JavaScript-节流函数的实现
1、对节流函数该怎么理解日常小案例:老师在上完课后给大家【五分钟】询问大家有没有什么问题要问但是在【五分钟】之内,不管有多少同学 来问问题,都只会【解答一个问题】如果在解答一个问题后,5分钟过后还没有同学问问题,那么就下课所以用三句话理解就是:当事件触发时,会触发这个事件的响应函数 当事件密集触发时,节流函数会按照一定的频率来执行函数 不管在这个中间有多少次触发这个事件,执行函数的频率总是固定的2、拙劣的图解3、 节流的应用场景监听页面的滚动事件 鼠标的移动事件
2021-12-14 18:06:54 2757 1
原创 JavaScript-防抖函数的实现
1、对防抖函数该怎么理解日常小案例:老师在上完课后给大家【五分钟】询问大家有没有什么问题要问如果在【五分钟】时间内,没有问题要问,那么就下课了(相当于执行事件了)如果在此期间,小非来问 问题,并且帮她解答了,解答完后,会再等【五分钟】看看还有没有别的同学问问题如果在此期间,小凡来问 问题,并且帮她解答了,解答完后,会再等【五分钟】看看还有没有别的同学问问题如果我等待超过了5分钟,那么就下课了(相当于执行事件了)所以用三句话理解就是:当事件触发时,相应的函数并不会立即触发,而是
2021-12-14 15:48:24 458
原创 JavaScript-简单封装Storage工具类
class MyCache { constructor(isLocal = true) { this.storage = isLocal ? localStorage: sessionStorage } setItem(key, value) { if (value) { this.storage.setItem(key, JSON.stringify(value)) } } getItem(key) { let value = this.
2021-12-13 20:13:14 398
原创 函数柯里化
1、对柯里化的理解只传递给函数一部分参数来调用它,让它返回一个函数去处理剩余的参数的过程2、柯里化的结构//1、普通函数function add(x, y, z) { return x + y + z}var result = add(10, 20, 30)//2、函数柯里化function sum1(x) { return function(y) { return function(z) { return x + y + z } }}
2021-12-13 16:14:12 215
原创 [].slice.call(arguments)将arguments转成array
常见的一种将arguments转成array的方式:[].slice.call(arguments)//提高性能,减少一层对原型链的追溯Array.prototype.slice.call(arguments)这段代码的意思是能够将具有length属性的arguments转换为数组在这里先手动实现一下Array中的slice方法Array.prototype.mySlice = function (start, end) { let arr = this sta
2021-12-13 15:05:21 317
原创 JavaScript-bind函数的简单实现
bind()方法创建一个新的函数,在bind()被调用时,这个新函数的this被指定为bind()的第一个参数,而其余参数将作为新函数的参数,供调用时使用。Function.prototype.myBind = function (thisArg, ...argsArray) { //第一步,对thisArg处理,以防传进来的不是对象,基本类型的数据会转为包装对象,null和undefined会指向window thisArg = thisArg ? Object(thi...
2021-12-13 14:27:19 116
原创 JavaScript-apply函数的简单实现
注意:call和apply的区别就是传参数的方式不一样sum.call("call", 20, 30, 40)sum.apply("apply", [20, 30, 40])Function.prototype.myApply = function (thisArg, argArray) { //第一步,对thisArg处理,以防传进来的不是对象,基本类型的数据会转为包装对象,null和undefined会指向window thisArg = thisArg ? Object.
2021-12-13 11:43:15 372
原创 JavaScript-call函数的简单实现
Function.prototype.myCall = function (thisArg,...args) { //第一步,对thisArg处理,以防传进来的不是对象,基本类型的数据会转为包装对象,null和undefined会指向window thisArg = thisArg ? Object(thisArg) : window //第二步,调用绑定的函数,这里的this就是这个函数 thisArg.fn = this //第三步,将调用函数的结果返回出去 .
2021-12-13 11:32:18 624
原创 数组去重方法
利用 集合 来简化实现数组去重let arr = [ 1, 1, 1, 2, 2, 3, 3, 3 ];let _set = {}let _newArr = []//可以减少赋值行为arr.forEach( v => _set[ v ] || ( _set[ v ] = true, _newarr.push( v ) ) )
2021-11-23 14:26:23 60
原创 不使用 JSON.stringify 实现将对象转换为 JSON 格式的字符串
此文只考虑 :基本类型, 数组, 和 Object 类型.一、构造函数处理数据class ToJSONString extends String { toString() { return `"${ this.valueOf() }"`; }}class ToJSONObject extends Object { type() { return 'ToJSONObject'; } toString() {
2021-11-23 11:58:58 645 2
原创 常用工具函数收集
1、获取两个日期之间所有的日期 getAllDate (start, end) { var dateRange = new Array(); var i=0; //开始日期小于等于结束日期,并循环 while(start<=end){ dateRange[i] = start; //获取开始日期时间戳 var start_ts = new Date(start).getTime();
2021-06-28 16:17:14 76 1
原创 解决微信小程序录制视频存在的问题
此篇文章主要针对微信小程序如下两个api :CameraContext.startRecord(Object object) CameraContext.stopRecord(Object object)使用场景:当我在开发一个小程序,它的需求是需要用户拍摄视频来上传,但是产品经理要求相机上需要有文字提示,所以就不能用原生的wx.chooseVideo,于是乎选择小程序提供的camera组件,可以通过<cover-view>提示文字</cover-view>来实...
2021-03-26 17:48:10 3688 2
原创 小程序踩坑之地图定位不精准的问题
最近做了一个小程序,需要获取用户的地理位置,用户授权后将地理位置逆解析后带到下一个页面上进行展示。但逆解析出来的结果与实际位置大概差了600m左右,一开始查了很多资料,都以为是经纬度获取就不精准,导致了后面的逆解析出现了问题,真的是抠破头的想解决办法,最后疲惫的时候无心扫过地图文档才找到了解决办法,分享出来给大家,愿2021大家头发健在~~~1、关于获取用户授权得到地理位置的代码: <view bindtap="scanCode"> 点击按钮 </view&...
2021-01-20 22:28:20 3190 6
原创 Koa的上层框架egg.js 简单入门
最近学完了技术胖的采用 React + egg.js 搭建的博客系统,受益颇深,想整理一下学习笔记,梳理一下 ,技术胖的课程链接https://www.jspang.com/detailed?id=52#toc241一、egg.js的简单介绍egg.js是由阿里开源的面向企业级开发的Node.js服务端框架,目的就是帮助团队和开发人员降低开发和维护成本。需要说的是他的底层是Koa2来搭...
2020-01-13 16:44:23 971
原创 React16的简单上手之路
小伙伴想学习的可以参考技术胖的教程哦,这是我最喜欢的前端大佬,地址http://www.jspang.com/posts/2019/05/04/new-react-base.html#1、安装安装脚手架:npm install -g create-react-app创建项目:create-react-app demo01 //用脚手架创建React项目运行:...
2019-11-26 15:57:13 347 2
原创 小程序开发常见需求
最近有独立开发了一个粉丝经济类的小程序,由于产品和后台对小程序都陌生,以及自己开发经验的欠缺,所以总结一下自己开发过程中所遇到的问题以及踩到的坑。第一个:关于openid的问题---前端让后台传,不要自己获取首先很感谢这个作者,在我产品上线后立即给了我思路让我定位到了我到问题,非常感谢。 由于是第一次获取这个openid,在查看了文档和各位大佬的博客后,我就开写了,自己在...
2018-12-11 14:11:58 6460 14
原创 微信小程序使用wxParse解析html
由于开发采用的是为wepy框架,写法和web开发不一样,在有富文本的时候就无法解析像div,p,br等标签,在看了一些博客自己稍微梳理了一些用法首先是wxparse的包,下载地址第一步:把这个包解压放到src目录下面,如图:第二步:在你需要使用的页面开始引入2.1: 样式部分引入2.2:页面结构部分: <view class="info">&...
2018-12-05 14:44:38 439
原创 挑战全栈Koa2
前端时间有跟着技术胖学了一下Koa2,相比于express是真的很简洁了,我很喜欢,这是一些笔记截图,大家如果对这个感兴趣,可以去听一听技术胖(百度搜索技术胖就可以了)的视频,个人觉得讲的很详细,很好理解。笔记是听课的时候截的图,有什么不清楚的地方大家可以一起交流哈~一、目录二、开发环境搭建 要求Node.js版本高于V7.6 node -v二、async/...
2018-11-21 10:06:43 486 1
原创 React Native 项目的搭建
在上一篇博客中我有和大家分享项目环境的配置,今天会给大家分享一下如何搭建一个项目,并让它在夜神模拟器中成功跑起来,分享的比较直接,只要按命令来,项目是可以跑起来的哦,希望初学者可以认真按照步骤来搭建项目~~~ 1. 全局安装react-native的脚手架 npm install -g yarn react-native-cli 2. 使用脚手架初始化react-na...
2018-09-14 17:48:56 400
原创 Reactive Native 开发环境配置
在失踪很久后,我又肥来了~~~ 最近一直在很痛苦的踩坑Reactive Native,在终于觉得自己好像七窍通了六窍之后,给大家分享一下我学习的心路历程,以及一些需要注意的事项,以及最后会弄一个demo跟大家分享,啊哈哈哈哈哈哈... 今天分享的是 Reactive Native 开发环境配置 Java8的安装及环境变量配置1、安装 ...
2018-09-14 17:38:12 1709 6
原创 关于vue常问的面试题
1、用vue做的项目,用了vue的全家桶吗?vue里面为什么不用jq?vue+vue-router+vuex+axios+es6+sass减少dom操作 2、vue如何进行性能优化?怎么做vue的兼容?1. 慎用deep watch2. 尽可能的减少watcher的数量 在上面16000个素材的情况,vue至少会创建16000个watcher,实际情况下会多得多,...
2018-08-04 14:32:46 12153
原创 使用Webpack+Babel打包Vue项目
使用Webpack+Babel打包Vue项目 步骤:安装babel相关的包npm install babel-core babel-loader babel-preset-env –save-dev 2.在项目根目录下创建一个babel的配置文件.babelrc 3.在.babelrc中配置写好对应的json代码片段代码片段{4.在webp...
2018-08-01 20:59:56 2877 5
原创 Webpack+Vue构建项目步骤
第一步:单纯的搭建出来我们的项目,并且通过webpack打包一个bundle.js然后运行起来步骤:1、建立项目必要的文件和文件夹(见截图)2、配置webpack.develop.config.js,指定入口,输出文件3、在main.js中写代码,App.vue中写代码 4、让我们的项目能运行App.vue 5、打包运行我们的项目...
2018-07-20 18:42:23 3176 4
原创 一个简单的函数封装--缓动动画
作为一个前端攻城狮,如果能够独立封装库的话,也说明在前端上有了一定的造诣了~~~~不过我是菜鸟,只能从小工具开始封装起来,偶然看到一个动画,就想起来了,封装一下,玩一玩这个缓动动画.个人觉得如果只是需要用到部分功能的话,自己封装比引入一个巨大的库要好的多,废话不多说~<!DOCTYPE html><html><head lang="en"> ...
2018-07-19 08:25:26 656
如何规范css的命名和书写
2018-06-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人