![](https://img-blog.csdnimg.cn/2020041609030784.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
js设计模式
js设计模式
舜岳
不积跬步无以至千里 v: shunyue1321
展开
-
js手写ajax 兼容IE浏览器
js手写ajaxconst ajax = function (options) { const settings = $.extend({}, options || {}) const deferred = $.Deferred && $.Deferred() let urlAnchor let hashIndex for (key in $.ajaxSettings) if (settings[key] === undefined) settings[key] = $原创 2021-04-19 13:29:48 · 246 阅读 · 0 评论 -
js快速计算文件hash值
1. 通过 requestIdleCallback or spark-md5利用浏览器空闲时间切片计算文件hash值:requestIdleCallback简介:window.requestIdleCallback(): 方法将 在浏览器的空闲时段内调用的函数排队。这使开发者能够在主事件循环上执行后台和低优先级工作,而不会影响延迟关键事件,如动画和输入响应。函数一般会按先进先调用的顺序执行,然而,如果回调函数指定了执行超时时间timeout,则有可能为了在超时前执行函数而打乱执行顺序。file_has原创 2021-02-23 11:47:02 · 6173 阅读 · 0 评论 -
js获取网络时间(axios获取响应头时间)
js 获取网络时间:由于new Date获取的是客户本地时间,有些情况下我们需要获取网络时间,避免用户更改本地时间而产生的某些功能冲突,则我们可以通过如下方法从浏览器获取我们服务器上的时间! 你也可以获取不同网址上的时间,如:www.baidu.comrequest = new XMLHttpRequest();request.open("GET", "/", true); // 中间参数可以改成 www.baidu.comrequest.send();//该属性每次变化时会触发reques原创 2021-01-19 14:47:25 · 7937 阅读 · 3 评论 -
js对象key使用变量命名
JavaScript object对象key使用变量命名let key = "name"let obj = { [key]: "Bob" } //{name: "Bob"}原创 2020-07-23 12:27:30 · 1306 阅读 · 1 评论 -
js手写MVC模式
效果图如下:代码如下:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Doc...原创 2020-02-16 09:46:32 · 301 阅读 · 0 评论 -
js手动配置迭代器接口
对象内添加://给Object添加迭代器Object.prototype[Symbol.iterator] = function () { let keys = Object.keys(this) let that = this, index = 0 return { next() { if (index < keys.length) return { v...原创 2020-02-09 13:33:41 · 265 阅读 · 0 评论 -
js自写发布订阅模块
实现效果如下图所示:代码如下:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>...原创 2020-02-09 12:21:54 · 179 阅读 · 0 评论 -
汉诺塔史上最详解
汉诺塔原理:一块黄铜板上插着三根宝石针,在其中一根针上从下到上地穿好了由大到小的64片金片,这就是所谓的汉诺塔。一次只移动一片,不管在哪根针上,小片必须在大片上面,最终将第一根宝石针的所有金片移至第三根宝石针上!下面已3片金片为例:js实现代码:let a = [], b = [], c = [];let num = 3; //多少片金片for (let i=1; i<=nu...原创 2020-02-07 12:04:56 · 1833 阅读 · 0 评论 -
js数组排序 (4种方法)
js递归排序法 (性能消耗低):<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title></head><body> <script> let arr ...原创 2019-09-25 09:32:24 · 2517 阅读 · 0 评论 -
js数组去重的4种方法:
js数组去重的4种方法:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equ...原创 2019-09-23 20:58:54 · 564 阅读 · 0 评论 -
最短路径优先算法:
JavaScript最短路径优先算法:代码如下:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>数据结构</title></head><body> <script> ...原创 2019-09-23 11:18:45 · 1984 阅读 · 0 评论 -
二叉树容器更快捷的对数据(增 删 改 查)
效果图:二叉树容器更快捷的对数据:增 删 改 查:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>二叉树容器</title></head><body> <script> /...原创 2019-09-22 09:16:52 · 125 阅读 · 0 评论 -
js A函数继承B函数的4种方法
方法一: (直接prototype等号赋值,缺点:地址相同)<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>js函数继承</title></head><body> <script>...原创 2019-07-09 09:43:06 · 1457 阅读 · 0 评论 -
组合模式
组合模式凡是后期需要修改的值 都放在构造函数的this.属性名称的方式来实现继承如果需要共同属性与方法 我们把它放在prototype里面function Preson(name, age, gender){ //凡是后期需要修改的值 都放在构造函数的this.属性名称的方式来实现继承 this.name = name; this.age = age; thi...原创 2019-07-03 19:21:16 · 173 阅读 · 0 评论 -
动态原型模式
动态原型模式通过开关 动态添加函数的方法<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta...原创 2019-07-03 20:15:35 · 418 阅读 · 0 评论 -
js递归缓存方法
方法一: 普通递归缓存法function fn(n){ if(isFinite(n) && n>0 && n == Math.round(n)){ //不是无限数 && 是否大于0 && 取整 if(!(n in fn)){ //是否在fn缓存内 if(n<=1){ //当n=1时,结果为1...原创 2019-07-09 14:54:21 · 666 阅读 · 0 评论 -
寄生构造函数模式
上代码:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA...原创 2019-07-05 08:39:07 · 690 阅读 · 0 评论 -
JavaScript单向链表结构
JavaScript单向链表结构:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>单向链表</title></head><body> <h1>见控制台打印</h1>...原创 2019-09-20 11:18:36 · 165 阅读 · 0 评论 -
仿写Map()方法
仿写es6的 new Map():<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta htt...原创 2019-09-20 17:32:05 · 172 阅读 · 0 评论 -
js哈希存储容器 (自写)
简单js哈希存储容器:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>自作哈希存储容器</title></head><body> <h1>见控制台打印</h1> &l...原创 2019-09-21 09:29:18 · 306 阅读 · 0 评论 -
Proxy代理的作用
Proxy代理的作用:Proxy 用于修改某些操作的默认行为,等同于在语言层面做出修改,所以属于一种“元编程”(meta programming),即对编程语言进行编程。Proxy可以理解成,在目标对象之前架设一层“拦截”,外界对该对象的访问,都必须先通过这层拦截,因此提供了一种机制,可以对外界的访问进行过滤和改写。Proxy这个词的原意是代理,用在这里表示由它来“代理”某些操作,可以...原创 2019-06-08 19:18:56 · 8036 阅读 · 0 评论