js
本专栏是关于JavaScript的一些知识点
花满樱❀
这个作者很懒,什么都没留下…
展开
-
虚拟dom转真实dom
初版// 文本节点 vDom: string// 元素节点 vDom: object {tag:'div', classList: [], value: 'div', children: [{...},{...}]}const virtualDomToDom = vDom => { let parentNode = document.querySelector('body') const toDom = vDom => { const vDomType = typeo原创 2021-12-27 18:13:28 · 461 阅读 · 1 评论 -
window子对象
Window的子对象document文档对象模型,通常用来操作 dom 元素,对 dom 的增删改查screen保存了当前屏幕的一些信息 console.log(screen.availHeight) // 浏览器窗口所在的屏幕的高度(单位像素) console.log(screen.availWidth) // 浏览器窗口所在的屏幕的宽度(单位像素) console.log(screen.height) // 浏览器窗口可用的屏幕高度(单位像素) console.log(screen.wi原创 2021-12-15 10:19:32 · 1553 阅读 · 0 评论 -
js判断两个对象是否相等
function isEqual(a, b) { const aProps = Object.getOwnPropertyNames(a) const bProps = Object.getOwnPropertyNames(b) if (aProps.length !== bProps.length) { return false } const set = new Set() aProps.forEach(item => { if (!set.has(item原创 2021-12-13 23:43:55 · 703 阅读 · 0 评论 -
js本地存储
本地存储js 本地存储主要有以下几种方式• cookie• session• localStorage• sessionStorage• indexedDB(待补充)cookiecookie,小型文本文件,指某些网站为了辨别用户信息而存储在用户浏览器(即客户端)上的数据。是为了解决 http 无状态导致的问题(问题:多次请求无法区分是否是来自同一用户)。它存储的文本数据一般不超过 4kb,由一个名称 name、一个值 value 和其它几个可选属性,如:有效期、安全性、使用范围。由于需要原创 2021-12-13 23:29:42 · 1395 阅读 · 0 评论 -
js typeof
typeof我们知道 typeof 可以用来判断一个值类型变量的类型,如下代码typeof 10 // numbertypeof '10' // stringtypeof undefiend // undefiendtypeof true // booleantypeof null // object当然,上面的只是一些基础用法,下面介绍的 typeof 应用场景可能很多都没见过一function fun() { console.log(typeof arguments)}fun原创 2021-11-28 15:12:56 · 466 阅读 · 0 评论 -
js使用reduce实现map
js使用reduce实现map先介绍一下 reduce 方法reduce() 方法对数组中的每个元素执行一个由您提供的reducer函数(升序执行),将其结果汇总为单个返回值。参数:callback:回调函数,有四个参数 (1) accumulator:累计器,累计回调的返回值; 它是上一次调用回调时返回的累积值,或initialValue(见于下方)。 (2) currentValue:当前值 (3) index:可选,当前项的索引号,如果指定了 initialValue,则原创 2021-10-13 20:05:47 · 613 阅读 · 0 评论 -
SyntaxError: Invalid regular expression: invalid group specifier name
这是因为Safari浏览器不支持两种 //格式的正则表达式零度断言:?<= , ?<!解决:使用构造函数代替 // 格式```javascriptlet reg = /ab?<=cd/改写成let reg = new RegExp('ab(?<=cd)')原创 2021-10-13 15:38:29 · 4578 阅读 · 0 评论 -
链表
复习 链表链表被称为线性表的链式存储结构定义链表:可以存储多个元素,由n个结点和指针链组成一个链表,称为线性表的链式存储结构;每个节点由数据域和指针域两部分组成单链表单链表:由n个节点和指针链组成,每一个结点由数据域(存放元素本身的数据)和指针域(指向下一个元素的引用(或称为指针))组成单链表的代码实现function LinkedList() { /** * 头指针,用于指向链表的第一个节点的引用, * 当链表为空的时候,head指向 null * 最后一个节点指原创 2021-10-11 01:14:51 · 189 阅读 · 0 评论 -
栈和队列
复习 栈和队列栈和队列前言:我们知道数组是一种线性结构,并且可以在任意位置进行插入和删除,有时候为了实现某些功能,需要对这种任意性加以限制,而栈和队列就是比较常见的受限的线性表结构,栈仅允许在表的一端进行插入和删除,这一端称为栈顶,另一端称为栈低。后进先出LIFO(last in first out):向一个栈插入元素叫做进栈,压栈,入栈,将新元素放到栈顶元素的上面,成为新的栈顶元素;从栈顶删除元素叫做出栈,退栈,删除栈顶元素,使其相邻的元素成为新的栈顶元素;基于数组实现functio原创 2021-10-06 12:22:52 · 73 阅读 · 0 评论 -
深度优先搜索和广度优先搜索
复习 深度优先搜索和广度优先搜索(js)先来了解一下图的存储方式------领接表和领接矩阵无向图的领接矩阵和领接表有向图的领接矩阵和领接表知道图是如何存储的以后,就可以用代码来保存一个图,采用邻接表的方式来存储图function Chart() { /* 顶点 */ this.vertex = [] /* 边 */ this.edge = new Map()// 添加顶点 Chart.prototype.addVertex = (vertex)原创 2021-10-04 11:27:36 · 98 阅读 · 0 评论 -
树和二叉树
复习 树和二叉树1. 树的定义树是是由n(n >= 0)各结点构成的有限集合,是一种一对多的数据结构当 n = 0 时,称为空树当 n > 0 时,称为非空树,具备以下性质有且仅有一个特殊的结点,这个结点称为根节点其余结点可分为m(m >= 0)个互不相交的有限集合,其中每一个集合本身又是一颗树,并叫做树的子树2. 树的基本术语3. 二叉树(**)1. 定义由 n(n >= 0)个结点组成的有限集合二叉树不是树的特殊情况,完全是两个概念。因为二叉原创 2021-10-03 23:56:19 · 224 阅读 · 0 评论 -
es6的Promise详解
PromisePromise的含义Promise是异步编程的一种解决方案,比以前传统的异步操作就是回调函数和事件更强大,使用起来更简便,并且避免了回调地狱的问题(回调地狱就是指多层回调函数嵌套)Promise是es6新增的引用类型,是一个构造函数,通过和关键字new一起使用来创建Promise实例,需要传递一个执行器函数(这个执行器函数是同步执行的),执行器函数有两个参数且都是函数,这两个参数是js提供的不需要我们手动创建const p = new Promise((resolve,reject原创 2021-09-30 00:55:44 · 285 阅读 · 0 评论 -
发起网络请求http的状态码有哪些?
参考这篇文章:http请求时常返回的状态码转载 2021-06-26 12:03:39 · 59 阅读 · 0 评论 -
常用排序算法(js)
复习排序算法1. 冒泡排序思路:每一轮都对相邻的两个元素进行比较,如果逆序则交换位置,直到所有元素都排好序为止基本操作:代码:ArrayList.prototype.bubbleSort = () => { const len = this.data.length for (let i = 0; i < len - 1; i++) { for (let j = 0; j < len - 1 - i; j++) { if原创 2021-09-28 23:54:14 · 603 阅读 · 0 评论 -
清晰专业的js代码
// 1. 单行if else 语句const num = 10if (num < 100) { console.log('yes')} else { console.log('no')}10 < 100 ? console.log('yes') : console.log('no')// 2. 使用展开运算符合并数组const arr = [1, 2, 3, 4]const brr = [5, 6, 7, 8]console.log([...arr, ...brr原创 2021-09-17 19:41:05 · 76 阅读 · 0 评论 -
es6的async和await
es6的async和await原创 2021-09-10 16:13:22 · 262 阅读 · 0 评论 -
jsDOM事件流
dom事件流分为三个阶段:捕获阶段、目标阶段、冒泡阶段事件捕获:事件从DOM顶层节点触发,逐级往下传播至最具体的元素接收的过程事件冒泡:事件从最具体的元素触发,逐级向上传播至DOM数的最顶层节点的过程目标元素:具体触发事件的元素当事件名触发后这三个阶段的顺序是这样的:捕获阶段,目标阶段,冒泡阶段一般我们在dom事件上只需要一个阶段就行了(即捕获阶段还是冒泡阶段),通过 addEventListener 这个方法的第三个参数,默认为false:冒泡阶段;true:捕获阶段冒泡: <原创 2021-06-27 10:57:43 · 204 阅读 · 2 评论 -
js其他值类型自动转换数值类型的情况
js其他值类型自动转换数值类型的情况其他值类型与数值类型做减法的时候,‘10’ --> 10;true —> 1;false —> 0;null ----> 0;undefined ----> NaNconsole.log('------减法--------')console.log(10 - '10') // 0console.log(10 - true) // 10 - 1 = 9console.log(10 - false) // 10 - 0原创 2021-06-26 23:22:06 · 111 阅读 · 0 评论 -
js给字符串在每两个之间插入一个0
使用字符串的replace方法,替换字符,即:a ----> a0,然后使用slice截取字符串,不截取最后一个字符let str = 'abc'let str1 = 'abcdef'// 将字符串的每个字符都添加一个0:a --> a0 然后删除最后一个 0function insert(str) { for (let i = 0; i < str.length; i += 2) { str = str.replace(str[i], str[i] + '.原创 2021-06-26 11:57:51 · 1193 阅读 · 0 评论 -
js数组求和
js对数组求和的常用方法原创 2021-06-25 22:57:27 · 119 阅读 · 0 评论 -
js判断数组的常用7种方法
我知道的Array.isArray(arr)const arr = [1, 2, 3]// 我知道的 五种方法console.log(Array.isArray(arr))arr instanceof Arrayconsole.log(arr instanceof Array)arr.__ proto__ === Array.prototypeconsole.log(arr.__proto__ === Array.prototype)arr(.__ proto _原创 2021-06-23 22:51:32 · 136 阅读 · 0 评论 -
js的基本数据类型包括es6新增
js基本类型有 undefined boolean null string numberes6新增有 Symbol BigIntconsole.log(typeof undefined)console.log(typeof null)console.log(typeof 1)console.log(typeof '1')console.log(typeof true)// es6新增基本数据类型// 1.Symbolconsole.log(Symbol(123))console.log(原创 2021-06-23 22:16:52 · 481 阅读 · 0 评论 -
js本地存储
js本地存储有cookie sessionStorage localStorage三种方式三种方式的区别:cookie无法保存太大的数据(最大4kb),本地保存的数据会发送给服务器,浪费带宽等sessionStorage,localStorage 存储在用户的浏览器,只能存储字符串,存储得容量较大(前者约5M,后者约20M)sessionStorage生命周期为关闭浏览器窗口,只在同一窗口(页面)下数据可以共享localStorage生命周期永久生效,除非手动删除 否则关闭页面也会存在,可以多窗原创 2021-06-10 20:28:06 · 681 阅读 · 0 评论 -
js存储cookie
/** * @description: 存储 token * @param {*} key 键名 * @param {*} value 键值 * @param {*} time 需要存储多长时间(单位为 h) * @return {*} */ function saveCookie(key, value, time) { // h ---> ms time = tim原创 2021-06-10 18:41:10 · 263 阅读 · 0 评论 -
js作用域与执行上下文
js作用域与执行上下文原创 2021-06-06 20:12:48 · 190 阅读 · 0 评论 -
js中var,let,const用法与区别
var 具有变量提升,let const 不具有// 1. var 具有变量提升,let const 不具有console.log(a) // undefinedconsole.log(b) // 报错console.log(c) // 报错var a = 10let b = 10const c = 10var可以重复声明变量,let和const不可以// 2. var可以重复声明变量,let和const不可以var num = 10var num =100let num1.原创 2021-06-06 17:17:51 · 198 阅读 · 0 评论 -
js修改函数this
js修改函数this原创 2021-06-06 16:48:21 · 1016 阅读 · 0 评论 -
js翻转数组
js翻转数组原创 2021-06-06 16:05:25 · 134 阅读 · 0 评论 -
js数据类型判断
js数据类型判断原创 2021-06-05 20:26:42 · 75 阅读 · 0 评论 -
js递归遍历深层数据
数据const lists = [ { id: 1, name: '电子设备', children: [ { id: 11, name: '手机', children: [ {id: 111, name: 'vivo'}, {id: 112, name:原创 2021-06-05 17:04:18 · 1156 阅读 · 0 评论 -
js实现深拷贝
js实现深拷贝原创 2021-06-05 16:19:46 · 57 阅读 · 0 评论 -
js值类型和引用类型的区别
js值类型和引用类型及其判断原创 2021-06-05 15:54:16 · 127 阅读 · 0 评论 -
js数组交集并集差集
数组相加const arr1 = [1, 3, 1, '1', 4, 6, 3]const arr2 = [1, 7, 9, 10, 3, 2, 4, 4, 1]// 第一种方法: 使用 concat方法,set数据结构,展开运算符function addArray(arr1, arr2, isRepeat) { // 合并数组 let arr = arr1.concat(arr2) // 去重操作 if (isRepeat) { arr = [...new Set(arr)原创 2021-05-31 22:03:50 · 383 阅读 · 2 评论 -
js保留数组重复元素或非重复元素
保留数组非重复元素const arr = [1, 3, 3, 6, 2, 2, 4, 4, '1']// 第一种方法: 使用indexOf和lastIndexOflet arr1 = []console.time('使用indexOf和lastIndexOf')arr.forEach(element => { if (arr.indexOf(element) === arr.lastIndexOf(element)) arr1.push(element)})console.timeE原创 2021-05-31 21:36:11 · 800 阅读 · 0 评论 -
js数组去重
JS数组去重原创 2021-05-31 21:25:57 · 98 阅读 · 0 评论 -
js函数内部this指向(包含严格模式)
<button id="app">点击</button> <script> // 1. 普通函数 this ---> window function fun() { console.log('普通函数', this) } fun() // 2. 立即执行函数 this -----> window ;(function () {原创 2021-05-27 20:07:17 · 123 阅读 · 0 评论 -
js使用Object.create创建对象
js使用Object.create创建对象原创 2021-05-27 09:40:49 · 226 阅读 · 0 评论 -
js原型链详解
js原型链原创 2021-05-27 09:37:09 · 279 阅读 · 0 评论 -
js执行机制
js执行机制原创 2021-05-25 19:35:27 · 107 阅读 · 0 评论 -
数组遍历for和forEach的区别
原创 2021-05-22 11:39:47 · 162 阅读 · 0 评论