- 博客(12)
- 收藏
- 关注
原创 lodash源码阅读5-----------uniq
用法 数组去重 uniq([2, 1, 2]) // => [2, 1] 解析 首先来看它的函数入口,没什么说的,就是判断数组是否有意义,有的话调用baseUniq方法 function uniq(array) { return (array != null && array.length) ? baseUniq(array) : [] } 接下来看看,baseUniq方法 大概逻辑就是,通过遍历数组,将新数组中没有的元素放入新的数组,逻辑不难,所以直接注释在
2021-03-24 17:27:48 159
原创 lodash源码阅读4-----------intersection
用法 intersection是一个用来求数组交集的方法,它可以接收多个数组,还能接受类数组的对象。 intersection([2, 1], [2, 3]) // => [2] 解析 首先来看它的函数入口,主要是通过castArrayLikeObject方法来过滤一些非法传入,这里比较mapped[0] === arrays[0]是为了确认传入的第一个参数是合法的,如果不合法那么交集必定为空集就不用再进行后面的遍历。 然后我们来看看castArrayLikeObject方法。 //这里通过剩余
2021-03-21 22:30:03 329
原创 lodash源码阅读3-----------pick
用法 pick方法类似于数组的filter方法,它可以从一个对象中,提取出对应属性的值,并组合成一个新的对象返回。它接受两个参数,被提取属性的对象,属性名称数组。 * const object = { 'a': 1, 'b': '2', 'c': 3 } * * pick(object, ['a', 'c']) * // => { 'a': 1, 'c': 3 } 解析 由于方法的调用栈很长,所以我们一个一个来阅读。 首先看看pick方法,内容很简单,传入空对象就返回一个{ },接下来我们看
2021-03-12 11:33:10 486
原创 lodash源码阅读2-----------slice
写在前面 毕业在找工作的时候,有遇到过一道面试题 : 请实现数组的slice方法 当时觉得,这个方法实现起来不容易吗,于是我交了下面的答卷 function mySlice(arr,start,end){ var newArr = []; for(var i= start ; i< end ; i ++){ newArr.push(arr[i]); } return newArr;
2021-03-04 15:51:40 225 1
原创 lodash源码阅读1-----------reduce
1.源码 function reduce(collection, iteratee, accumulator) { const func = Array.isArray(collection) ? arrayReduce : baseReduce const initAccum = arguments.length < 3 return func(collection, iteratee, accumulator, initAccum, baseEach) } function arra
2021-02-26 15:21:37 435 2
原创 dom属性和JS中的dom操作
DOM 操作 1.创建新节点 createDocumentFragment() //创建一个 DOM 片段 createElement() //创建一个具体的元素 createTextNode() //创建一个文本节点 2.添加、移除、替换、插入 appendChild() //把节点插入到父节点的末尾 removeChild() //删除dom节点 replaceChild() //替换dom节点 insertBefore() //在已有的子节点前插入一个新的子节点 3.比较 isSameNod
2020-09-03 16:32:35 293
原创 JS事件流,事件处理,事件绑定,事件委托
事件流 1.事件冒泡 IE 的事件流叫做事件冒泡(event bubbling),即事件开始时由最具体的元素(文档中嵌套层次最深的那个节点)接收, 然后逐级向上传播到较为不具体的节点(文档),最后到document。 2.事件捕获 Netscape Communicator 团队提出的另一种事件流叫做事件捕获(event capturing)。事件捕获的思想是不太具体的节点应该更早接收到事件, 而最具体的节点应该最后接收到事件。事件捕获的用意在于在事件到达预定目标之前捕获它。 3.DOM事件流 “DOM2级
2020-08-06 15:40:02 167
原创 深入理解JS的原型,原型链,继承
原型 创建对象的方法 字面量创建 构造函数创建 Object.create() var o1 = { name: "value" }; var o2 = new Object({ name: "value" }); var o3 = new M(); var P = { name: "o4" }; var o4 = Object.create(P); 使用构造函数 function Person(name, age, job) { this.name = name; this.age = ag
2020-07-22 17:42:16 135
原创 js中的预编译,作用域链
预编译 1.js代码的执行步骤 语法分析: 主要扫描代码有没有语法上的错误(比如少些括号,写了中文符号) 预编译: 进行变量的声明提升,函数整体提升,函数执行前一刻的准备工作。 解释执行: 对js代码进行执行,解释一行,执行一行。 2.预编译的前奏 暗示全局变量:任何变量未经声明就赋值,此变量归全局所有。 一切全局变量都是window的属性 例如: var a = 100; console.log(window.a); //100 if(1){ a = 10; } console.log(w
2020-07-21 17:50:46 139
原创 JS类型检测,类型转换
一.类型检测 1.typeof方法 typeof是一个运算符,有2种使用方式:typeof(表达式)和typeof 变量名,第一种是对表达式做运算,第二种是对变量做运算。 typeof运算符的返回值包括如下几种: ‘undefined’ --未定义的变量或值 ‘boolean’ --布尔类型的变量或值 ‘string’ --字符串类型的变量或值 ‘number’ --数字类型
2020-07-20 15:24:58 173
原创 CSS中的nth-child和nth-of-type选择器
CSS中的nth-XXX选择器 我们知道,在CSS中,选择相同类名,相同标签的子级元素或者兄弟元素都很快捷方便,但是如果要有目的性的去筛选一些子级或者同级元素,那么,就要用到这里所说的选择器 nth-child和nth-last-child 这个选择器可以选择同级的一类标签,或者类。 根据一些数学规则: an+b:代表匹配父容器下面中第an+b个子元素,a,b都可以为0 比如: <head&...
2019-11-13 10:11:24 819
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人