自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

_

随记

  • 博客(52)
  • 收藏
  • 关注

原创 2.4、JavaScript 数据类型 - 数组

几乎所有的编程语言中,都存在一个名叫“数组”的特殊数据结构,它能存储有序的集合。JavaScript 自然也不例外。下面就让我们看看,JavaScript 中的数组是什么样子的...

2022-03-24 17:10:56 6361

原创 2.3、JavaScript 数据类型 - 数字类型

在 JavaScript 中,数字有两种类型:(1)常规数字类型,以 64 位的格式 IEEE-754 存储,也被称为“双精度浮点数”。这也是我们绝大多数时候使用的数字。(2)BigInt 数字,用于表示任意长度的整数。有时会需要它们,因为常规数字不能安全地超过 2^53 或小于 -2^53。

2022-03-07 16:27:13 5914

原创 2.2、JavaScript 数据类型 - 字符串

本小节主要讲解的基本数据类型中的字符串类型(string)和数字类型(number)。这两种数据类型在 JS 都是非常基础且常用的类型。掌握好它们是非常有必要的...

2022-03-02 18:06:23 1619

原创 2.1、JavaScript 数据类型 - 对象包装器

基本数据类型一共有 7 种,分别是 string,number,bigint,boolean,symbol,null 和 undefined。基本数据类型单纯从表面上看,它就是一个值,一个值是没有办法像对象一样通过点符号去获取属性的。然后实际上的结果却出乎我们的意料,就像下面这样...

2022-02-26 18:18:36 2164

原创 1、JavaScript 基础知识回顾

这一章主要对 JavaScript 中的一些基础,规范再做一些简单的介绍,这些本身是大家学习本系列的前提知识储备,但在这里仍然对一些重要的基础知识进行梳理讲解。有一定基础的同学可以选看或者直接跳过本节...

2022-02-25 17:17:46 2678

原创 从头再学 JavaScript 系列前言

说实话想写这个系列已经很久了,对于每一个学习前端的同学来说,JavaScript 都是必须要掌握的,但是实际上对很多同学而言,特别是刚入门或者入门时间不长的同学,对 JS 的认识并不深...

2022-02-24 17:22:47 7511

原创 设计模式学习前言

设计模式是什么?这是学习设计模式开始的时候每个人脑海中的第一个问题。单单从名字上来看确实会让人觉得这是一门非常高大上的学问,但是实际上真的是这样吗?

2022-01-17 18:26:44 1062

原创 HashMap 随记

在上面构造器中存在一个方法【tableSizeFor】,这个方法的作用是:返回给定目标容量的二次方大小。换句话说,HashMap 的默认容量为16,而容量是以2的次方扩充的(即使是自定义传入,也一定会经过转换,如传入30,则返回32),一是为了提高性能使用足够大的数组,二是为了能使用位运算代替取模预算;

2024-05-30 16:54:40 300

原创 ArrayList 随记

Java中的ArrayList底层实现机制是动态扩容数组,elementData数组相当于容器,当容器不足时就会再扩充容量,但是容器的容量往往都是大于或者等于ArrayList所存元素的个数。这段代码的实际构建过程是:【 new Object[initialCapacity] 】注:动态扩容内容后面再详解根据上面的内容,如果不使用 transient 修饰 elementData ,会导致序列化elementData数组时,将未使用的空间也序列化了,无疑会浪费一部分空间。

2024-05-29 10:07:06 570 1

原创 优先级队列

什么是优先级队列呢?我们得首先清楚优先级的概念。有这样一个例子,在一家医院里面,一开始的时候看病是按照先到先看的顺序,也就是我们前面学到的队列。然后有一天一个身受重伤的病人来了,护士告诉他说你去排队吧,然后还没有等到他排到就不幸去世了。这件事情让医院明白了一个道理,那就是针对不同情况的病人,需要给他们一个不同的级别,例如受重伤的人就应该最先被治疗,而仅仅是轻微感冒这类似的问题则可以稍微延后一点......

2022-05-05 17:40:33 2997

原创 词典之散列

逻辑上的词典,是由一组数据构成的集合,其中各元素都是由关键码和数据项合成的词条(entry)。映射(map)结构与词典结构一样,也是词条的集合。二者的差别仅仅在于,映射要求不同词条的关键码互异,而词典则允许多个词条拥有相同的关键码。

2022-04-26 16:56:39 1401

原创 高级搜索树之红黑树

对于大部分人来讲,红黑树绝对是一个“高级”的代名词,很多人不了解红黑树,也不知道它能做什么。实际上,完全不需要这样想,红黑树并没有大家想象的那么深奥。当然,学习红黑树并不是没有前提条件的,首先你需要了解 AVL 树,其次还需要对 B 树有一定程度的认识,在这个基础之上,相信你一定能掌握好红黑树!

2022-04-14 17:47:00 2188

原创 高级搜索树之B树

微软创始人比尔盖茨在 1981 年提出了一个观点:640K ought to be enough for anybody 。他想说明的是,在计算机世界中,实际上只需要 640K 的内容容量就足够存放一切信息了。也许现在你会觉得这是不具有长远眼光的一句话,但是当你完成 B 树的学习之后,你可能会认为这句话是正确的!

2022-04-14 17:38:46 2636

原创 高级搜索树之伸展树

伸展树(Splay Tree)是平衡二叉搜索树的一种形式。相对于 AVL,伸展树的实现更为简捷。伸展树无需时刻都严格地保持全树的平衡,但却能够在任何足够长的真实操作序列中,保持分摊意义上的高效率。伸展树也不需要对基本的二叉树节点结构,做任何附加的要求或改动,更不需要记录平衡因子或高度之类的额外信息,故适用范围更广。

2022-04-14 17:26:31 2831

原创 8、设计模式行为型之观察者模式

观察者模式就是定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。生活中存在着许多这样的例子,智能设备的发展让学校和家长之间的联系变得更加紧密了...

2022-02-23 14:59:46 322

原创 7、设计模式行为型之策略模式

策略模式其实是一种应该去“意会”的模式。我们可以先来看看策略模式的定义:定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换...

2022-02-20 21:40:17 171

原创 5、设计模式结构型之适配器模式

在我们日常生活中,适配器其实是很常见的,举几个例子吧:1、苹果手机从 7 版本开始,它的耳机接口和充电接口共用,并且都是方形孔。如果你想使用以前的圆形插孔耳机,就只能通过一个适配器来实现...

2022-01-26 09:28:44 526

原创 4、设计模式结构型之装饰器模式

装饰器模式(Decorator Pattern),它不仅允许向一个现有的对象添加新的功能,同时又不会改变其结构...

2022-01-24 15:00:19 653

原创 3、设计模式创建型之原型模式

看到原型模式,不知道大家有没有想起来 JS 的基石:原型及原型链。对我而言,第一次看到设计模式中竟然有原型模式时,我的第一反应就是好奇这是不是就是 JS 中原型呢...

2022-01-20 14:00:48 902

原创 2、设计模式创建型之单例模式

一个类仅有一个实例?那么我们在什么情况下需要使用它呢,在前端又有什么应用场景?

2022-01-19 09:45:29 481

原创 1、设计模式创建型之工厂模式

什么叫工厂模式,这肯定是每一个人最开始的疑问。那么为什么不先从它的名字来分析一下呢?从百度百科查来的的所谓工厂的定义:是一类用以生产货物的大型工业建筑物。即我们为工厂输送原料,经过工厂对原料进行处理加工之后会输出产物...

2022-01-18 09:29:54 518

原创 React 高级指引之 Context

React 高级指引之 Context 1.为什么使用 Context 首先来考虑这样一个场景,有一段文本内容用于展示主题的字体颜色及字体大小。我们可以通过组件的属性来传递,代码如下: 顶层组件,定义主题// 引入中间组件import IntermediaryComponents from './IntermediaryComp'// 顶层组件,定义主题class Context extends React.Component { constructo

2021-09-27 10:49:08 3761 2

原创 React 核心概念(4)

React 核心概念(4) 1.表单 1.1 表单概述 这里先给出一个简单的表单示例:import React from 'react';class FormComp extends React.Component { constructor (props) { super(props); } render () { return ( <form> <label htmlFor="us

2021-09-05 15:59:12 1623

原创 React 核心概念(3)

React 核心概念(3) 1.事件处理 React 元素的事件处理和 DOM 元素的很相似,但是有一点语法上的不同:(引自: 事件处理 ) React 事件的命名采用小驼峰式(camelCase),而不是纯小写。使用 JSX 语法时你需要传入一个函数作为事件处理函数,而不是一个字符串。 1.1 绑定事件 还记得在之前文章中我们写过的增加计数的 class 组件吗?我们这里会再一次用到:import React from 'reac

2021-09-03 00:19:24 1743 2

原创 React 核心概念(2)

React 核心概念(2) 1.组件介绍及 props 1.1 组件分类 组件,从概念上类似于 JavaScript 函数。它接受任意的入参(即 “props”),并返回用于描述页面展示内容的 React 元素。(引自: 组件 & Props ) 组件分为 class 组件 和 函数组件 两种,下面给出两种组件的简单示例:// 函数组件function FunctionComponent(name, address) { retur

2021-09-02 00:01:17 1671

原创 React 核心概念(1)

React 核心概念(1) 1.初识 JSX 1.1 JSX 简介 首先我们给出 JSX 的一个简单示例:const element = <h1>Hello, world!</h1>; 上面的标签语法既不是字符串也不是 HTML。 这就是 JSX ,是一个 JavaScript 的语法扩展。React 建议书写代码时配合 JSX 。JSX 可以很直观的描述 UI ,并且具有 JS 的全部功能。 J

2021-08-31 23:26:28 1716 1

原创 JS 树(数组存储)进行递归遍历获取路径

JS 树(数组存储)进行递归遍历获取路径 实现功能:通过叶子节点 id ,寻找包含该叶子节点的整条路径。(树的数据以数组形式保存) 直接上代码:const getPathByKey = (curKey, data) => { let result = []; // 记录路径结果 let traverse = (curKey, path, data) => { if (data.length === 0) { return; }

2021-07-23 14:33:25 2787

原创 3.JS - 说下原型和原型链

3.JS - 说下原型和原型链 当谈到继承时,JavaScript 只有一种结构:对象。每个实例对象(object)都有一个私有属性(称之为 proto )指向它的构造函数的原型对象(prototype)。该原型对象也有一个自己的私有属性(proto),层层向上直到一个对象的原型对象为 null。根据定义,null 没有原型,并作为这个原型链中的最后一个环节。( 引自: 继承与原型链 ) 这是引自 MDN 中 继承与原型链 一节的描述,非常精炼,但在完全不了解原型和原型链情况下无

2021-07-14 15:11:22 95

原创 2.JS - 说下JS数据类型有哪些

2.js - 数据类型 基本类型(值类型):string,number,boolean,null,undefined,symbol 引用类型:Object,Array,String,Number,Boolean,Date,Math,RegExp … 拓展: 1.不同的数据类型如何存放于内存中 基本类型全部存放于栈中引用类型的值存放与堆中,而把指向值的地址存放于栈中 2.栈与堆的区别 基本类型是直接存储在

2021-07-12 22:51:54 95

原创 1.JS - 可以说下undefined与null的区别吗

1.undefined与null的区别 null 表示"没有对象",即该处不应该有值。undefined 表示"缺少值",就是此处应该有一个值,但是还没有定义。 拓展: null 的典型用法: 1.作为函数的参数,表示该函数的参数不是对象 2.作为对象原型链的终点。Object.getPrototypeOf(Object.prototype); // nullgetPrototypeOf:返回对象的原型( Returns the

2021-07-12 15:31:15 118

原创 JS 深比较相等

JS 深比较相等 首先来看几个例子:console.log(0 === 0); // trueconsole.log('str' === 'str'); // trueconsole.log(true === true); // trueconsole.log(undefined === undefined); // trueconsole.log(null === null); // trueconsole.log({} === {}); // falseconsole.log

2021-07-09 10:14:07 688

原创 JS 数组去重方式

JS 数组去重方式 内容概要:set 方法去重循环遍历方法利用 map 键的不可重复性进阶版去重,实现引用类型去重 需要去重数组模板:const arr = [ 0,0,0, 'str','str','str', true,true,true,'true', undefined,undefined,undefined,'undefined', null,null,null,'null', NaN,NaN,NaN,'NaN', {val:

2021-07-08 23:32:53 912

原创 ES 标准中的相等比较算法

ES标准中的相等比较算法 1.抽象等式比较算法( The Abstract Equality Comparison Algorithm ) == 基于该算法当类型相同时,直接比较值是否相等类型若不相同,则首先转化为类型相同的值,再进行比较 只有一种情况推荐使用 == ,即判断一个值为 null 或 undefined 时,可以使用同时判断这两种情况。let val1 = null;let val2 = undefined;console.log(val

2021-07-07 16:07:27 1639

原创 JS 防抖与节流

防抖与节流 1.防抖(debounce): 1.1 定义在连续的多次触发同一事件的情况下,给定一个固定的时间间隔(假设 300 ms),该时间间隔内若存在新的触发,则清除之前的定时器并重新计时( 重新计时 300 ms )表现为在短时间多次触发同一事件,只会执行一次函数(最后触发的那次)。 1.2 实现function debounce (fn, wait) { if (typeof fn !== 'function') throw new Error(

2021-07-05 17:14:47 939 1

原创 JS 浅拷贝与深拷贝

JS 浅拷贝与深拷贝 关于深拷贝与浅拷贝的概念在此不在赘述,本篇只讲述如何实现深拷贝(针对数组与对象) 1.切实可行的深拷贝 1.1 自定义拷贝函数const cloneDeep = (value) => { // 非数组和非对象直接返回值即可 if (value == null || typeof value !== 'object') { return value; } // 初始化 let result = Array.is

2021-07-01 09:49:34 775 1

原创 JS Web-API-存储

4. JS Web-API-存储 4.1 面试题 1.描述 cookie,localStorage,sessionStorage 的区别 4.2 cookie 本身是用于浏览器和 server 通讯,是被 “借用” 作本地存储来,并不是为了做存储的而出现可以用 document.cookie = “…” 来修改(追加的方式)设置值后,页面刷新后 cookie 仍然存在,所以可以用来做本地存储(但出现本意不是为了存储) cookie 缺

2021-06-29 23:30:20 196

原创 JS Web-API-事件

3. JS Web-API-事件 3.1 面试题1.编写一个通用的事件监听函数2.描述事件冒泡的流程3.无限下拉的图片列表,如何监听每个图片的点击 3.2 知识点事件绑定事件冒泡事件代理 3.3 事件绑定// 自定义通用的绑定函数const clickBtn = document.getElementById('button1');clickBtn.addEventListener('click', function () { // e.pre

2021-06-29 18:06:02 215

原创 JS Web-API-BOM

2. JS Web API BOM 2.1 面试题如何识别浏览器的类型分析拆解 url 各个部分 2.2 navigatorwindow.navigator 对象包含有关访问者浏览器的信息。 1.常用的一些属性console.log(`浏览器代号:${navigator.appCodeName}`);console.log(`浏览器名称:${navigator.appName}`);console.log(`浏览器版本:${navigator.appVe

2021-06-28 18:25:59 152

原创 JS Web-API-DOM

JS Web-API-DOM DOM:Document Object Model (文档对象模型) 3.1 面试题1.DOM 是哪种数据结构2.DOM 操作的常用API3.attr 和 property 的区别4.一次性多次插入多个 DOM 节点,考虑性能 3.2 DOM 本质 DOM 是 树 结构DOM 本质是浏览器从 html 文件中解析出来的一棵树; 3.3 DOM 节点操作 1.获取 DOM 节点<

2021-06-28 18:03:44 175

原创 JS target 和 currentTarget 的区别

JS target 和 currentTarget 的区别 1.target 和 currentTarget 区别 target:触发事件的元素。currentTarget:事件绑定的元素。 那么什么是触发事件的元素,什么又是事件绑定的元素呢?别着急,先接着往下看 2.当一个标签下没有子标签时<div id="divId">点击</div><script> document.getElementById('

2021-06-25 17:53:19 2508 1

空空如也

空空如也

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

TA关注的人

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