js
前端Kirk
这个作者很懒,什么都没留下…
展开
-
html转pdf分页问题终极解决方案 k-htmlpdf
jspdf分页有个比较不好的地方就内容过长的时候虽然会虽然能做到分页,但是会把内容给截断,解决思路是给每个可能会被截断元素加上类,然后动态的计算该元素的位置是否在下一页和上一页之间,如果在的话就添加一个空白元素把这个元素给挤下去,这样就能实现了......原创 2022-06-23 09:25:11 · 2659 阅读 · 4 评论 -
使用ES6 的Proxy实现数组负索引
let arr = [1,2,3,45,6,7]const arrProxy = new Proxy(arr,{ get(target,proerpty){ if(proerpty>=0){ return Reflect.get(target,proerpty) } return Reflect.get(target,target.length+Number(proerpty)) }})console..原创 2021-08-17 17:54:36 · 192 阅读 · 0 评论 -
javascript统计字符串出现的不重复字符最长长度
function total(str) { let len = str.length if (len < 1) return 1 let total = 0 let k = 0 // 每次需要计算量 for (let i = 1; i < len; i++) { let j = i - 1 let count = 0 while (j >= k && str原创 2021-08-17 17:53:17 · 166 阅读 · 0 评论 -
js的单例模式
传统单例模式 保证一个类仅有一个实例,并提供一个访问它的全局访问点。实现单例核心思想 无非是用一个变量来标志当前是否已经为某个类创建过对象,如果是,则在下一次获取该类的实例时,直接返回之前创建的对象,接下来我们用JavaScript来强行实现这个思路,请看代码: class Db { //ES6类的静态方法(只能直接由类名调用的方法):static getInstance //ES6类的静态属性:直接挂载在类名上的方法,如:Db.instance() static原创 2021-08-17 17:50:59 · 640 阅读 · 0 评论 -
javascript的闭包和回调
1.闭包闭包是一种保护私有变量的机制,在函数执行时形成私有的作用域,保护里面的私有变量不受外界干扰。直观的说就是形成一个不销毁的栈环境。js闭包典型的运用场景就是计算器困境: function add() { var counter = 0; return counter += 1; } console.log(add()) console.log(add()) console.log(add())如上面的代码本意是输出3,最终输出的确都是原创 2021-08-17 17:49:55 · 303 阅读 · 0 评论 -
promise原理
js Promise 实现原理(手写)一. 简单实现调用 then 方法,将想要在 Promise 异步操作成功时执行的 onFulfilled 放入callbacks队列,其实也就是注册回调函数,可以向观察者模式方向思考;创建 Promise 实例时传入的函数会被赋予一个函数类型的参数,即 resolve,它接收一个参数 value,代表异步操作返回的结果,当异步操作执行成功后,会调用resolve方法,这时候其实真正执行的操作是将 callbacks 队列中的回调一一执行;class Pro原创 2021-08-17 17:47:04 · 744 阅读 · 0 评论 -
vue3的响应式原理和虚拟DOM
为啥使用Proxy?而弃用definePropertydefineProperty不会对数组每个元素都监听,提升了性能.(arr[index] = newValue是不会触发试图更新的,这点不是因为defineProperty的局限性,而是出于性能考量的)defineProperty不能检测到数组长度的变化,准确的说是通过改变length而增加的长度不能监测到(arr.length = newLength也不会)。所以Vue2是不能检测对象属性的添加或删除的。相对于defineProperty,原创 2021-08-17 17:45:18 · 242 阅读 · 0 评论 -
vue-qr和html2canvas的简单使用
title: vue-qr和html2canvas的简单使用date: 2021-03-15 11:06:51tags: [‘element-ui’,‘js’]categories: [‘Vue’]安装导入插件npm install --save html2canvasnpm install --save vue-qr import vueQr from "vue-qr"; import html2canvas from "html2canvas";html 部分 .原创 2021-03-15 16:07:11 · 186 阅读 · 0 评论