JavaScript
张小锐
程序员之所以犯错误,不是因为他们不懂,而是因为他们自以为什么都懂。
展开
-
js中的深拷贝和浅拷贝
两者的概念和区别对于基本数据类型(Undefined、Null、String、Number、Boolean),浅拷贝是对值的复制,改变其中一个的值另一个不会跟着改变。对于对象来说,浅拷贝是对地址的复制,并没有开辟新的栈,也就是复制的结果是两个对象指向同一个地址,修改其中一个对象的属性,则另一个对象的属性也会改变;而深拷贝则是开辟新的栈,两个对象对应两个不同的地址,修改一个对象的属性,不会改变另...原创 2018-04-04 09:52:09 · 249 阅读 · 0 评论 -
js常见算法题
判断一个单词是否是回文var str = 'helloolleh';function checkPalindrom(str) { return str == str.split('').reverse().join('');}console.log(checkPalindrom(str));//true去掉一组整型数组重复的值 let arr = [1, 13, ...原创 2018-04-17 09:44:10 · 528 阅读 · 0 评论 -
js中的函数节流(throttle)和函数去抖(debounce)
前言 在js中,我们经常会遇到这种情况,需要监听页面的scroll事件或者鼠标的mousemove事件等。由于这些事件在鼠标移动的过程中会被浏览器频繁的触发,会导致对应的事件也会被频繁的触发,这样就会造成很大的浏览器资源开销,而且好多中间的处理是不必要的,这样就会造成浏览器卡顿的现象。我们无法做到让浏览器不去触发对应的事件,但是可以做到让处理事件的方法执行频率减少(throttle)或者在...原创 2018-05-17 17:32:50 · 789 阅读 · 0 评论 -
flatten(扁平化)数组
前言顾名思义,扁平化就是将嵌套的多维数组变成一维数组的过程。今天将通过几种方式来实现数组的扁平化。先定义这几种方法公用的一个数组const arr = [1, 2, [3, 4, [5, 6]]]初级版初级版也通过两种方式来实现第一种利用数组的concat方法function flatten(arr) { let res = [] arr.map(element =&...原创 2019-08-05 18:26:15 · 1965 阅读 · 1 评论 -
面向对象与继承
类与实例首先,通过两种方式来声明一个类:第一种,构造函数的方式function Animal1(name) { this.name = name}第二种,ES6中的class声明class Animal2 { constructor(name) { this.name = name }}两种方式生成实例的方式是一样的var animal...原创 2019-08-06 14:43:39 · 216 阅读 · 0 评论 -
性能优化日常总结
代码级别优化语义化的标签和代码规范事件委托减少事件注册,节省内存。简化了dom节点更新时,相应事件的更新。适合用事件委托的事件:click,mousedown,mouseup,keydown,keyup,keypress。按需加载动画尽量用css3写懒加载css spritsiconfont节流和防抖vue中路由懒加载和异步组件项目级别优化资源压缩合并,减...原创 2019-08-06 15:01:06 · 213 阅读 · 0 评论 -
取数组中最大值
首先,定义一个数组:const arr = [2, 6, 4, 20, -3, 8]第一种方法Array.prototype.max = function() { let max = this[0] this.forEach(item => { max = max >= item ? max : item }) return max}const ma...原创 2019-08-07 14:51:27 · 547 阅读 · 0 评论