随笔分类 -  JS

js,
摘要:JS二叉树的实现及前序遍历、中序遍历、后序遍历 // 二叉树的实现 function Node(data, left, right) { this.data = data; this.left = left; this.right = right; this.show = () => { retur 阅读全文
posted @ 2021-01-13 19:12 萝卜爱吃青菜 阅读(230) 评论(0) 推荐(0)
摘要:从公众号里看到一道异步题目,花了点时间看了下,挺有意思的。 const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); const subFlow = createFlow([() => delay(1000).t 阅读全文
posted @ 2020-08-24 17:57 萝卜爱吃青菜 阅读(306) 评论(0) 推荐(0)
摘要:注释 / @example @limitFrequency('debounce') @limitFrequency('throttle') @params type:String enum('debounce','throttle') @params wait:Number 延迟时间默认500毫秒, 阅读全文
posted @ 2020-04-22 15:12 萝卜爱吃青菜 阅读(587) 评论(0) 推荐(0)
摘要:链表规则,前一个指向后一个,必须从头开始查找。 push pop delete get isEmpty push(value): 将值添加到链表的末尾 pop() :弹出链表中的最后一个值 get(index):返回给定索引中的项 delete(index):从给定索引中删除项 isEmpty(): 阅读全文
posted @ 2020-04-17 16:47 萝卜爱吃青菜 阅读(201) 评论(0) 推荐(0)
摘要:// 建议复制到编辑器里跑一下看看 function Model(tasksProperties){ } Model.create = function(init) { function Model(taskProperties) { if (this instanceof Model) { thi 阅读全文
posted @ 2020-03-20 13:52 萝卜爱吃青菜 阅读(713) 评论(2) 推荐(0)
摘要:小程序里的自定义组件里是有数据监听器的,可以监听对应数据的变化来执行callBack,但是页面Page里没有对应的api就显的很生硬,比如某个数据变了(如切换城市)需要重新刷页面,如果不做监听,每次都要在数据变化的地方手动去调一次函数。 那么如何像vue那样在Page里实现 watch 和 comp 阅读全文
posted @ 2019-11-25 19:55 萝卜爱吃青菜 阅读(2982) 评论(2) 推荐(0)
摘要:ts中是这样的 经过tsc test.ts编译成ES5的源码如下,可在对应生成的test.js中查看 总结:理解起来还是挺费劲的,或者说到现在都没完全理解,面向对象、原型链这一块容易忘记,当然,还是理解的不够深刻,不然很难忘掉的。 阅读全文
posted @ 2019-02-27 16:36 萝卜爱吃青菜 阅读(1580) 评论(0) 推荐(0)
摘要:function debounce(fn,delay,immediate=false){//防抖动 var timer return function () { var context = this var arg = arguments if(timer && !immediate)... 阅读全文
posted @ 2019-02-26 14:21 萝卜爱吃青菜 阅读(457) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2018-11-28 16:47 萝卜爱吃青菜 阅读(416) 评论(0) 推荐(0)
摘要:很早之前的一篇博客写了bind的实现,是基于apply的,感兴趣的朋友看完这篇文章可以接着看看bind的实现。 apply 和 call 主要就是传参的区别。这里就不多说了,直接看代码。 实例 实现原理:其实就是把fn放在obj下面执行(后面得把obj.fn从obj上删除了,保持obj的孑然之身嘛! 阅读全文
posted @ 2018-11-16 16:48 萝卜爱吃青菜 阅读(895) 评论(0) 推荐(0)
摘要:当浏览器发展到第四代时候,浏览器开发团队遇到了一个有意思的问题;页面的哪一部分会拥有某个特地的事件?要明白这个问题问的是什么,可以想象画在纸上的一组同心圆,如果你把手指放在圆心上,那么你的手指指向的不是一个圆,而是纸上所有的圆。两家公司的开发团队在这件事情上的看法是一致的,如果你单击了某个按钮,他们 阅读全文
posted @ 2018-11-01 20:50 萝卜爱吃青菜 阅读(482) 评论(0) 推荐(0)
摘要:call,apply,bind都是用来挟持对象或者说更改this指向的,但是区别还是有的,call 传参是 fn.call(this,1,2,3) apply传参是 fn.apply(this,[1,2,3]) 而前两者是立即执行的,后者Bind是返回一个函数 var foo = fn.bind(t 阅读全文
posted @ 2018-08-31 15:41 萝卜爱吃青菜 阅读(410) 评论(0) 推荐(1)
摘要:由于对象的赋址存储,导致日常业务中,如果把一个对象赋值给了另外一个,那么其中一个的更改会导致另外一个也变了。 所以对象的深拷贝就需要去从中打断两者之间的关联,通过深层次的循环递归将取址类的数据的值逐个转移到新对象的同名属性中。 日常的assgin,concat.sclie以及循环赋值等,只能拿来做浅 阅读全文
posted @ 2018-08-24 17:14 萝卜爱吃青菜 阅读(240) 评论(0) 推荐(1)
摘要:promise是用来解决Js中的异步问题的,js中所有的异步可从callback → promise → generator + co = async + await 其实所有的都是callback的变相处理,只是后者慢慢变的越来越优雅和强壮可扩展。 那么如何实现promise呢?先观察一下prom 阅读全文
posted @ 2018-08-16 20:20 萝卜爱吃青菜 阅读(12582) 评论(5) 推荐(4)
摘要:第一步:对象属性赋值为函数,对象内部函数控制年龄这一参数变化,同时成长事件也执行。 继续思考:成长事件只能接受一个函数,那么如果是多个函数呢?韩信要打仗,要建功立业的呀。可以很快的想到growEvent换成数组来接受多个函数。 那么,growEvent就要靠Push进数组了,而不是粗暴的赋值了。成长 阅读全文
posted @ 2018-08-04 14:38 萝卜爱吃青菜 阅读(415) 评论(0) 推荐(0)
摘要:最近在学习react,看官方文档的时候,有一个例子中的一句话让我困惑。就是讲todoList的例子 concat不是连接数组的吗?看了一下concat的介绍 数组虽然是对象类型,但是对象毕竟不是数组啊! 顺便记录一下,用push也可以,但是数组的push返回的是数组的长度,str返回的是新的字符串。 阅读全文
posted @ 2018-02-28 16:16 萝卜爱吃青菜 阅读(586) 评论(0) 推荐(0)
摘要:之前写js比较多的的时候也写过深拷贝,浅拷贝,继承啥的,还有自定义的监听事件。然而过了很久都忘了。 最近在项目上用的深拷贝都是 b = JSON.parse( JSON.stringify(a) ) ,没有深究过原理,也没考量过百分百的正确性。只是用了很多次没啥错误现象。 然而在群里有人问到怎么深拷 阅读全文
posted @ 2018-01-16 17:26 萝卜爱吃青菜 阅读(347) 评论(0) 推荐(0)
摘要:1. 当我们写了一段正确的代码,但是在不同浏览器下,产生一些不正确的解析,这叫做兼容性问题 2. 在IE6下 ,标准盒模型: width/height = content; 可视宽/高 = content + padding + border; 怪异盒模型 width/height = 可视宽/高; 阅读全文
posted @ 2017-10-07 10:36 萝卜爱吃青菜 阅读(295) 评论(0) 推荐(0)
摘要:平时我们都会去获取元素的各种属性值,例如宽高等等的值!但是tranform是个让人很头疼的点,获取出来的是矩阵,耐何线性代数学的并不是那么6啊。 解决方法的思路:只能采取有点取巧的方法,在我们设置的时候把它记录一下,然后在通过这个函数去获取出之前设置的transform相关的值,再也不用去依靠浏览器 阅读全文
posted @ 2017-10-03 00:25 萝卜爱吃青菜 阅读(438) 评论(0) 推荐(0)
摘要:这类问题是面试中经常出现的css问题。那么你会吗?会的话,你能想出几种解决方案呢?我这里大致列举六个方法! 1.弹性盒模型flex布局 2.利用伪类来对齐 3.利用空span,原理与上面的类似 4.利用表格的特性:单元表格的内容默认垂直居中 5.将块标签转换成表格属性,display:table-c 阅读全文
posted @ 2017-10-03 00:15 萝卜爱吃青菜 阅读(1052) 评论(6) 推荐(3)