JS
文章平均质量分 69
yan_yuanfeng
码农
展开
-
利用WeakMap、递归实现对象深拷贝。解决拷贝对象环引用爆栈问题
function checktype(obj){ //检查对象类型 return Object.prototype.toString.call(obj).slice(8,-1)}function depCopy(target,hash=new WeakMap()){ //hash 作为一个检查器,避免对象深拷贝中出现环引用,导致爆栈。 let type = checktype(......原创 2020-05-08 11:35:41 · 1879 阅读 · 5 评论 -
微信小程序绘制自定义海报,可带二维码,头像,文字等
1、资源准备①海报背景图(建议放在不要放在本地)、②头像(需要授权)、③带参二维码、④需要自定义展示的文字、小的icon图片2、工具类,及方法①兼容屏幕大小的rpx转px的方法(手机屏幕有差异,canvas用的是px为单位) function createRpx2px() { const { windowWidth } = wx.getSystemInfoSync() ...原创 2019-12-11 14:10:07 · 3670 阅读 · 0 评论 -
js原型链的理解
其实之前对js原型链有个基本的理解,但工作中用到的并不多,逐渐忘记了。所以准备写个博客。 我觉得首先得明白一个,就是每一次创建一个构造函数(其实就是普通的函数)的时候,都会根据一个特定的规则创建一个原型属性(prototype)。其中包括两项:construct和__proto__ 其次先来看下构造函数创建对象:function Person(){ this.name='...原创 2018-03-23 16:57:24 · 297 阅读 · 0 评论 -
针对移动端软键盘调用后,fixed定位失效部分解决方案
1、偷梁换柱。用absolute替换fixedjs获取屏幕高度,并把外部容器的高度设置为屏幕高度,给需要fixed的dom设置position:absolute。2、监测屏幕变化当点击输入框的时候弹出然键盘,会触发屏幕变化,一旦屏幕变小时将原来的fixed样式设置成其他的标准的流式布局。屏幕回到原来的大小时就恢复原来的fixed样式 var windowInnerHeight = ...原创 2018-07-12 16:55:30 · 2688 阅读 · 1 评论 -
vue源码分析nextTick()
1、vue页面更新简介在这里粗略的描述下当数据变化后页面更新流程:1、通过Observe数据劫持监听数据变化,当数据变化后通知触发闭包内的dep执行dep.notify,2 、接着执行Watcher的update()3、update()中并没有立即执行dom的更新,而是将更新事件推送到一个任务队列中。4、执行任务队列中的方法。下图是我对数据双向绑定的一个理解。这篇文章重点不是理解双...原创 2019-02-25 15:37:36 · 195 阅读 · 0 评论 -
正则表达式匹配方法 match() -- Vue正则解析template
最近看到vue源码的模板解析,parse 中主要就是用正则去解析template然后生成ast抽象树。这则匹配用到最多的就是match。match([string] | [RegExp])这里主要说正则表达式1、返回值:Array/null2、不使用g全局匹配时var str='2019shanghai=nihao !!'str.match(/\w[i]/)可以...原创 2019-02-21 11:23:01 · 23839 阅读 · 0 评论 -
正则匹配 之环视(?=pattern)(?!pattern)等理解
1、环视首先需要了解 什么是环视:顾名思义 环视 就是环顾四周本质 :环视不匹配任何字符,只匹配文本中的特定位置环视 只进行子表达式的匹配,不占有字符,匹配到的内容不保存到最终的匹配结果,是零宽度的。环视匹配的最终结果就是一个位置。环视一共有四种:(?=pattern)、(?!pattern)、(?<=pattern)、(?<!pattern)逆序环视:(?<=pat...原创 2019-09-04 00:02:05 · 886 阅读 · 0 评论