自定义博客皮肤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 139

原创 lodash源码阅读4-----------intersection

用法intersection是一个用来求数组交集的方法,它可以接收多个数组,还能接受类数组的对象。 intersection([2, 1], [2, 3]) // => [2]解析首先来看它的函数入口,主要是通过castArrayLikeObject方法来过滤一些非法传入,这里比较mapped[0] === arrays[0]是为了确认传入的第一个参数是合法的,如果不合法那么交集必定为空集就不用再进行后面的遍历。然后我们来看看castArrayLikeObject方法。//这里通过剩余

2021-03-21 22:30:03 265

原创 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 434

原创 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 184 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 368 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 267

原创 JS事件流,事件处理,事件绑定,事件委托

事件流1.事件冒泡IE 的事件流叫做事件冒泡(event bubbling),即事件开始时由最具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上传播到较为不具体的节点(文档),最后到document。2.事件捕获Netscape Communicator 团队提出的另一种事件流叫做事件捕获(event capturing)。事件捕获的思想是不太具体的节点应该更早接收到事件,而最具体的节点应该最后接收到事件。事件捕获的用意在于在事件到达预定目标之前捕获它。3.DOM事件流“DOM2级

2020-08-06 15:40:02 153

原创 深入理解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 119

原创 js中的预编译,作用域链

预编译1.js代码的执行步骤语法分析:主要扫描代码有没有语法上的错误(比如少些括号,写了中文符号)预编译:进行变量的声明提升,函数整体提升,函数执行前一刻的准备工作。解释执行:对js代码进行执行,解释一行,执行一行。2.预编译的前奏暗示全局变量:任何变量未经声明就赋值,此变量归全局所有。一切全局变量都是window的属性例如:var a = 100;console.log(window.a); //100if(1){ a = 10;}console.log(w

2020-07-21 17:50:46 108

原创 JS类型检测,类型转换

一.类型检测1.typeof方法typeof是一个运算符,有2种使用方式:typeof(表达式)和typeof 变量名,第一种是对表达式做运算,第二种是对变量做运算。typeof运算符的返回值包括如下几种:‘undefined’ --未定义的变量或值‘boolean’ --布尔类型的变量或值‘string’ --字符串类型的变量或值‘number’ --数字类型

2020-07-20 15:24:58 154

原创 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 780

原创 一篇简单的随笔

祝大家程序员节快乐~

2019-10-24 12:44:45 150

空空如也

空空如也

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

TA关注的人

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