- 博客(13)
- 收藏
- 关注
原创 ES5 继承
对象冒充继承原型链继承组合继承原型式继承寄生式组合继承1.对象冒充继承使用call或apply改变this指向,并执行了父类的构造函数缺点: 无法继承父类原型(prototype)上的方法和属性 function Father(s) { this.a = s; } Father.prototype.b = 3; Father.prototype.run = function () { console.log(.
2021-08-22 14:08:46
75
原创 JS addEventListener第三个参数 捕获与冒泡
JS addEventListener第三个参数 捕获与冒泡element.addEventListener(event, function, useCapture) 方法可传入三个参数。event: 时间名称,如 ’click‘,’scroll‘ 等function:触发事件时的执行函数useCapture:可选项。传入布尔值,表示事件是否在捕获阶段执行,true为捕获阶段执行,false(默认值)为冒泡阶段执行。DOM事件流事件捕获与冒泡事件捕获(Event Captu
2021-08-13 15:04:21
310
原创 JS 数据结构与算法(九)排序
9.排序大O表示法:对算法效率的粗略估计,表示算法的速度跟随数据量的变化先来创建一个列表封装我们的数据项.// 封装ArrayListfunction ArrayList() { this.array = [] ArrayList.prototype.insert = function (item) { this.array.push(item) } ArrayList.prototype.toString = function () {
2021-08-07 13:09:58
102
原创 JS 数据结构和算法(八)树结构
8. 树结构特点查找效率高(但不如哈希表)空间利用率高有序可以查找最大最小值非线性结构定义1.结点的度(Degree):结点的子树个数.2.树的度:树的所有结点中最大的度数. (树的度通常为结点的个数N-1)3.叶结点(Leaf):度为0的结点. (也称为叶子结点)4.父结点(Parent):有子树的结点是其子树的根结点的父结点5.子结点(Child):若A结点是B结点的父结点,则称B结点是A结点的子结点;子结点也称孩子结点。6.兄弟结点(Sibling):具有同一父结点的各结
2021-08-05 10:11:57
225
原创 JS 数据结构和算法(七)哈希表
7.哈希表特点优点插入和删除元素效率高,O(1)时间级速度比树还要快,编码较简单缺点无序key不能重复哈希函数哈希化: 将大数字转化成数组范围内下标的过程, 我们就称之为哈希化.哈希函数: 通常我们会将单词转成大数字, 大数字在进行哈希化的代码实现放在一个函数中, 这个函数我们成为哈希函数.哈希表: 最终将数据插入到的这个数组, 我们就称之为是一个哈希表哈希化效率装填因子:装填因子 = 总数据项 / 哈希表长度. 链地址法:可能大
2021-08-03 23:05:24
244
原创 JS 数据结构和算法(六)集合
6.集合结构特点无序的不能重复封装(基于对象)// 封装集合的构造函数function Set() { // 使用一个对象来保存集合的元素 this.items = {} //{}为obj对象 // 集合的操作方法}常见操作add(value):向集合添加一个新的项。remove(value):从集合移除一个值。has(value):如果值在集合中,返回true,否则返回false。clear():移除集合中的所有项。size():返回
2021-08-03 23:03:00
83
原创 JS 数据结构和算法(五)双向链表
5.双向链表结构封装// 创建双向链表的构造函数function DoublyLinkedList() { // 创建节点构造函数 function Node(element) { this.element = element this.next = null this.prev = null // 新添加的 } // 定义属性 this.length = 0 this.head = null
2021-08-01 10:46:52
78
原创 JS 数据结构和算法(四)链表
4.链表数组缺点:创建数组需要一段连续的内存空间(一整块内存),并且大小是固定的。当前数组不能满足容量需求时, 需要扩容. (一般情况下是申请一个更大的数组, 比如2倍. 然后将原数组中的元素复制过去)而且在数组开头或中间位置插入数据的成本很高, 需要进行大量元素的位移链表优点:链表中的元素在内存中不必是连续的空间,实现灵活的内存动态管理创建时不必确定大小,可以无限延伸下去插入和删除元素时,时间复杂度可以达到O(1),效率高链表缺点访问元素时必须从
2021-08-01 10:44:03
59
原创 JS 数据结构和算法(三)队列结构
3.队列结构(queue)结构也是一种受限的线性结构:先进先出,前端(front)删除,后端(rear)进入封装队列enqueue(element):向队列尾部添加一个(或多个)新的项。dequeue():移除队列的第一(即排在队列最前面的)项,并返回被移除的元素。front():返回队列中第一个元素——最先被添加,也将是最先被移除的元素。队列不做任何变动(不移除元素,只返回元素信息——与Stack类的peek方法非常类似)。isEmpty():如果队列中不包含任何元素,返回true,否则返
2021-08-01 10:42:15
49
原创 JS 数据结构和算法(二)栈结构
2. 栈结构(stack)LIFO ( last in first out)函数调用栈栈的操作push(element): 添加一个新元素到栈顶位置.pop():移除栈顶的元素,同时返回被移除的元素。peek():返回栈顶的元素,不对栈做任何修改(这个方法不会移除栈顶的元素,仅仅返回它)。isEmpty():如果栈里没有任何元素就返回true,否则返回false。clear():移除栈里的所有元素。size():返回栈里的元素个数。这个方法和数组的length
2021-07-30 17:12:27
118
原创 JS 数据结构和算法(一)数组结构
1. 数组结构常见方法方法名方法描述concat连接2个或更多数组,并返回结果every对数组中的每一项运行给定函数,如果该函数对每一项都返回 true,则返回true, 否则返回falsefilter对数组中的每一项运行给定函数,返回该函数会返回 true的项组成的数组forEach对数组中的每一项运行给定函数。这个方法没有返回值join将所有的数组元素连接成一个字符串indexOf返回第一个与给定参数相等的数组元素的索引,没有找到则返回-
2021-07-30 12:36:51
65
原创 Promise 的常用方法
Promise三个状态:pending:进行中fulfilled:已成功rejected:已失败一旦状态改变,就不会再变缺点:无法中途取消Promise如果不设置回调函数,Promise内部抛出的错误,无法反应到外部在pending状态无法得知进展const Promise = new Promise(funcition(resolve, reject){ if(/*异步操作成功*/){ resovle(value) }else{ reject(va
2021-07-26 21:16:06
457
原创 统计用户页面在线时长
统计用户页面在线时长1.背景监测用户的页面停留时间,了解用户的工作效率。2.分析将用户行为分为三个周期:1.进入页面:首次进入,路由跳转,浏览器前进、后退,页面刷新2.活跃状态切换:窗口最小化,浏览器Tab切换,鼠标、键盘长时间无操作,锁屏、休眠,页面遮挡3.离开页面:页面关闭,路由跳转,浏览器前进、后退,页面刷新监听用户进入和离开:window.onload 和 window.onbeforeunload 可以监听页面的进入和离开(无法监听单页面多应用的切换)Vue-router 的
2021-07-25 22:23:43
1527
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人