自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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

原创 一篇简单的随笔

祝大家程序员节快乐~

2019-10-24 12:44:45 168

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除