09 2021 档案
摘要:###含义 当你复制一个值给另一个值的时候,假如复制后的值跟之前的值不会再有任何关系,就叫深拷贝,否则就叫浅拷贝。 那么什么时候才会有关系,什么时候没有呢?例子: let str = 'string' let strA = str strA = 'changed' console.log(str,
阅读全文
摘要:###为什么数组和对象的侦测方式不同? 可能很多人不理解为什么Array的侦测方式和Object的不同,举例说明: this.list.push(1) 如上,我们是使用push方法向list中新增了数字1。之前介绍Object的时候,其侦测方式是通过getter/setter实现的,但是数组是通过使
阅读全文
摘要:
###如何追踪变化 在js中,有两种方法可以侦测到数据的变化:Object.defineProperty和Es6的Proxy。这里讨论的是vue2的响应式原理,所以就说Object.defineProperty,在vue3中使用的是Proxy,还没有开始看呢。 那么Object.defineProp
阅读全文

摘要:####冒泡排序优化(直接搞最优版,不罗里巴叽的) function BubbleSort(arr) { let k = arr.length - 1, pos = 0 for(let i = 0; i < arr.length; i++) { let flag = true for(let j =
阅读全文
摘要:数组去重 Array.from(new Set(arr)) let arr = [1,1,2,2,3,3] let brr = Array.from(new Set(arr)) // let brr = [...new Set(arr)] console.log(brr) //[1,2,3] for
阅读全文
摘要:###前言 靓仔,你知道JavaScript的内置类型有几种吗? 你晓得如何正确安全地使用类型间强制转换吗? 对于JavaScript语法/句法中的微妙细节,你的熟悉程度又如何呢? ###类型 首先要了解JavaScript的内置类型有如下几种: null undefined boolean num
阅读全文
摘要:###深度遍历 ####前序遍历 function DLR(arr,root) { if(!root) return; //遍历结束条件 arr.push(root.val) //收集结果 DLR(arr, root.left) DLR(arr, root.right) } ####中序遍历 fun
阅读全文
摘要:###前言 嘿,骚年,你是否还在使用JavaScript的"伪"类应付了事,而没有使用更简洁的"行为委托"设计模式?你是否听说连接到其他对象的对象? 如果都没有,那就接着往下看吧。 ###属性描述符 首先来了解一点准备知识,什么是属性描述符呢?即writable(可写)、enumerable(可枚举
阅读全文
摘要:###前言 日常灵魂拷问,你能复述this绑定的四条基本原则吗? ###this绑定规则 你是否常常因为不知道怎么判断this绑定到谁身上而懊悔;你是否常常因为this的调用出错而无语;你是否常常因为this的各种骚操作而不知所措。 只要你看了这篇文章,上面的问题都能迎刃而解。 ####默认绑定 最
阅读全文
摘要:###前言 首先,问一下自己: 你知道javascript的词法作用域是基于编译器语义而不是解析器的吗? 你能理解词法作用域和作为值得函数这两者得直接结果之一就是闭包吗? 假如你都不知道,看完这个,应该就略知一二(精通好吧)了。 ###作用域 作用域就是负责收集并维护由所有声明的变量组成的一系列查询
阅读全文
摘要:####使用RegExp ``` function getCharCount(str, char) { //str父字符串,char子字符串 const regexp = new RegExp(char, 'g') //'g'表示需要匹配整个字符串 const result = str.match(
阅读全文