原生JavaScript
文章平均质量分 63
坐在路边数星星
稀里糊涂
展开
-
addEventListener 和 removeEventListener 事件监听的简单实现
前端经常性会用到的addEventListener和removeEventListener,在这里使用class进行一个简单的实现:1. 实现分析通过想象addEventListener和removeEventListener的功能,需要包含以下核心功能:能够注册处理函数(handler function)能够发布事件(emit event)在发布事件的同时执行性已注册的处理函数,需要维护处理函数的事件的对应关系能够移除处理函数2. 代码实现const noop = () => {原创 2021-05-18 22:49:37 · 409 阅读 · 0 评论 -
原生JavaScript实现观察者模式
什么是观察者模式维基百科对观察者模式的定义如下: 观察者模式是软件设计模式的一种。在此种模式中,一个目标对象管理所有相依于它的观察者对象,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。此种模式通常被用来实时事件处理系统。说的简单些,就是在数据发生改变时,对应的处理函数自动执行。维基的定义中涉及到了主动发出通知,按照这种方式,在angularJS中的事件广播更是原创 2017-10-19 17:37:17 · 10998 阅读 · 1 评论 -
ES6——对yield和yield*的理解
概念yield和yield*都是配合Generator进行使用的。yieldyield是关键字,其语法如下:[rv] = yield [expression];expression:是Generator函数返回的遍历器对象调用next方法是所得到的值;rv:是遍历其对象调用next方法是传递给next方法的参数这里要简单的说一下next方法,其语法如下:gen.next(value)valu原创 2017-11-03 18:08:21 · 18948 阅读 · 2 评论 -
使用ES5实现私有非单例属性
示例主要在ES5的环境下实现如下效果: 1. 私有化属性 2. <font color=red>非单例,即每个实例拥有独立的私有化属性 3. <font color=red>同源,即每个示例拥有相同的构造函数和原型,并且`set`和`get`方法只定义一次原创 2017-11-21 18:03:58 · 861 阅读 · 0 评论 -
使用Array.prototype.fill和Array.prototype.map未曾注意到的基础
Array.prototype.fill使用fill配合Array构造函数进行指定个数和初始值的数组创建,并可以通过相关函数的连续调用,完成对数组的修改,从而抛离了for或while的循环使用。/** * 生成指定长度有统一初始值的数组 * * @param {Number} len - 长度 * @param {*} val - 初始值 * @returns {Array[...原创 2018-06-12 19:01:46 · 527 阅读 · 0 评论 -
如何避免重复addEventListener?
避免重复addEventListener的核心就是在添加前通过removeEventListener将已经添加的处理函数进行移除。如下代码为id=btn的元素添加click事件的处理函数clickHandler:const $btn = document.getElementById('btn');function clickHandler() { console.info(`thi...原创 2018-08-15 17:25:07 · 16174 阅读 · 5 评论 -
Cookie知识整理
Cookie是服务于HTTP协议的小数据块,主旨是协助无状态的HTTP协议进行稳定的数据记录。为交互式前端页面提供了技术基础。虽然自身因浏览器而异存在着不同的大小、个数限制,同时安全隐患已然存在,但目前仍被广泛使用,本文主要是对Cookie的基本技术的整理和总结原创 2018-11-21 17:12:18 · 283 阅读 · 0 评论 -
关于浮点数的那些事
关于浮点数的那些事在进行浮点数运算或判断时,经常会出现很多“奇异”的结果,其实都是浮点数运算及表示规则造的怪0.1 + 0.2 = 0.300000000000000048.88 * 100 = 888.00000000000011050.6 * 100 = 105059.99999999999基本原因浮点数的运算是基于 IEEE 754 标准的;二进制基准;对循环小数通过相对...原创 2018-12-06 16:30:22 · 191 阅读 · 0 评论