
js
一袋米要扛几楼_
最怕你一生碌碌无为,还安慰自己平凡可贵
展开
-
js实现事件总线EventBus
手写EventBusclass EventBus { constructor() { this._events = [];//存储自定义事件 } /** * 注册事件和处理函数 * @param event * @param fn */ on(event, fn) { if (Array.isArray(event)) { f...原创 2020-04-14 10:57:11 · 8761 阅读 · 1 评论 -
sessionStorage\localStorage总结
获取localStorage最大容量sessionStorage\localStorage在谷歌容量为5M左右(function () { if (!window.localStorage) { console.log('当前浏览器不支持localStorage!') } var test = '0123456789'; var add = function (nu...原创 2020-04-08 17:29:57 · 585 阅读 · 0 评论 -
js 宏任务与微任务总结
宏任务macrotask有哪些script setTimeout setInterval setImmediate requestAnimationFrame I/O操作 UI渲染微任务microtask有哪些process.nextTick MutationObserver Promise.then执行优先级主线程script>微任务process.nextTick>pr...原创 2020-04-02 21:54:50 · 1533 阅读 · 0 评论 -
js时间格式化
废话不多说,直接上代码:/** * 时间格式化 * @param date 字符串或日期类型 * @param fmt yyyy-MM-dd hh:mm:ss * @returns {*} */function formatDate(date, fmt){ date=date || new Date(); fmt=fmt || 'yyyy-MM-dd hh:mm:ss'; ...原创 2019-05-29 10:35:10 · 1407 阅读 · 0 评论 -
js发布订阅者模式es6实现及其图解
直接上代码//主题class Dep{ constructor(callback){ this.subs=[]; //每个主题更新数据的方法不一样,所以需要传进来 this.callback=callback; } addSub(sub){ this.subs.push(sub); return this; } notify(){...原创 2019-07-04 13:44:06 · 2817 阅读 · 0 评论 -
js实现最短路径求解,简单易懂
简介网上看到很多最短路径求解问题的js实现版本,看了老半天,没怎么看懂。看懂了我也复现不了。+_+!所以自己写了个简单易懂的,小白容易看懂。至于大佬,,,,觉得写的不好你来打我咯。。。别看代码长,一大半是测试代码题目已知图如下,所有线段可以来回走,求 A 到 G 最短路线已知图如下,所有线段可以来回走,求 A 到 K 最短路线es6实现如果有多个长度相同的最短路径,只输...原创 2019-07-05 16:29:28 · 2979 阅读 · 0 评论 -
js高级函数 柯里化 去柯里化 偏函数 节流 防抖 分时 惰性加载
函数柯里化/** * 函数柯里化 * 每次调用都将参数存起来,最后需要使用的时候才求值 * @param fn * @returns {Function} */let currying = function (fn) { let args = []; return function () { if (arguments.length === 0) { re...原创 2019-07-23 17:45:01 · 384 阅读 · 0 评论 -
flow.js静态类型检查
文章目录flow入门demowebstrom集成flowvs code集成flowflow原始类型详细语法flow入门demo初始化一个flow项目mkdir flow-democd flow-demonpm init -ynpm i flow-bin flow-remove-types --save-dev //安装flow修改package.json"main": "...原创 2019-08-01 15:59:17 · 404 阅读 · 0 评论 -
web性能优化原理与方案
深入理解http请求的过程是前端性能优化的核心从请求过程中可以发现一些优化点dns是否可以通过缓存减少dns查询时间?dns缓存可以减少dns解析时间网络请求的过程走最近的网络环境?cdn以空间换时间,减少请求时间相同的静态资源是否可以缓存?下次不再请求,减少请求时间,减轻服务端压力能否减少请求http请求大小?静态文件压缩, gzip减少http请求css\js\img合并服...原创 2019-08-27 22:14:31 · 807 阅读 · 0 评论 -
prototype, __proto__, constructor
原文相关题目JS原型链与继承别再被问倒了原创 2019-09-11 10:49:10 · 3471 阅读 · 1 评论 -
css,js文本长度变...省略号
文章目录css文本超出变...省略号js文本超出变...省略号css文本超出变…省略号单行文本.ellipsis{ width:200px;/*必须是固定宽度值*/ overflow:hidden;/*超出部分隐藏*/ text-overflow:ellipsis;/*超出部分显示省略号*/ white-space:nowrap;/*规定段落中的文本不进行换行 */...原创 2019-05-28 11:19:35 · 4108 阅读 · 0 评论 -
electron创建应用、打包、自动更新
安装环境安装node npm cnpm tomcat安装 visual studio 2017安装 python27安装 Squirrel.Windowsgit bush中执行:git clone --recursive https://github.com/squirrel/squirrel.windowscd squirrel.windows…NuGet\NuGet.exe ...原创 2019-03-20 13:16:28 · 1592 阅读 · 3 评论 -
js 深克隆(考虑到类型检查,递归爆栈,相同引用,Date和Function等特殊类型克隆,原型克隆)
定义函数获取数据类型function _getDataType(data){ return Object.prototype.toString.call(data).slice(8,-1);};定义函数克隆RegExp类型function copyRegExp(re){ var flags = ''; if (re.global) flags += 'g'; if (re...原创 2019-01-22 21:29:31 · 6421 阅读 · 9 评论 -
JavaScript forEach map every some filter reduce深入理解使用方法及浏览器源码实现
前言这几个方法都是js5里面最常用,性价比最高的方法,熟练使用的话可以精简掉很多代码,提高代码可读性,还可以链式调用.废话不多说,让我们开始吧!forEachforEach实例forEach讲解forEach浏览器原生源码mapmap实例map讲解map浏览器原生源码everyevery实例every讲解every浏览器原生源码...原创 2018-05-27 02:09:02 · 2664 阅读 · 2 评论 -
js阻止取消冒泡和阻止默认行为(兼容性写法)
取消冒泡兼容性写法function canclebubble(event){ var event = event||window.event; //兼容火狐 if(event.stopPropagation){ event.stopPropagation(); //标准浏览器 }else{ even...原创 2018-05-30 18:03:32 · 2105 阅读 · 0 评论 -
js单例模式的es5实现和es6实现,以及通用惰性单例实现
单例模式es5实现es6实现惰性单例通用惰性单例实例单例模式一开始不创建实例对象,当第一次使用时才创建 用一个变量标志当前是否已经为某个类创建过对象,如果已创建则在下次获取时返回之前创建的实例对象es5实现function Singleton(name){//对象构造方法 this.name=name; this.instance;}S...原创 2018-06-13 22:52:12 · 1822 阅读 · 0 评论 -
JavaScript奇技淫巧, 代码优化, 代码整理收藏, 干货!
前言js实现一个需求可能有上百种解法, 有的大费周章, 有的寥寥几笔, 如何让自己的代码又少又效率更高呢?[doc]forEachforEach实例forEach讲解forEach浏览器原生源码mapmap实例map讲解map浏览器原生源码everyevery实例every讲解every浏览器原生源...原创 2018-06-01 10:13:01 · 3456 阅读 · 0 评论 -
js深入call、apply、bind的实例教程和区别分析总结
前言call、apply、bind是js常用的使用指定对象强行调用其他对象方法的关键字;call表示强行调用一次;apply表示强行调用一次并打散数组参数;bind表示将原函数绑定某变量并返回新的函数(永久绑定),然后每次调用新的函数this都执行绑定的对象通俗点说,就是强行使某个方法里面的this等于调用该方法时传入的第一个参数!前言callapplybind总结...原创 2018-06-01 14:44:58 · 1979 阅读 · 0 评论 -
forEach for-in for-of在Object Array Set Map中异同点
forEach可以遍历数组和类数组对象可以遍历Set和MapSet遍历出的item和index相同不能遍历Objectbreak,continue,return无效从下标0遍历到length-1不会遍历数组上自定义的自有属性和自定义的原型属性(0<n<length-1的数组除外)for-in可以遍历数组和对象遍历出来的是键不能遍历Set和Map,会遍历所有自...原创 2018-11-27 19:07:04 · 551 阅读 · 0 评论 -
js this使用详解
this在不同环境中指向的不一致性可能导致很多难以排查的错误, 特此整理一波this 在不同环境下的指向. 请牢记this最终指向的是运行时调用该函数的对象函数中的this此时 `this=window`function test(){ let x = 1; console.log(this.x); //undefined}//直接调用test(); // 调用的是wi...原创 2019-01-24 10:46:03 · 1897 阅读 · 1 评论 -
js new到底做了什么?如何重写new?
new 构造函数()执行顺序在堆中开辟对象内存空间, 记为obj在obj 中添加__proto__属性并指向 构造函数.prototype将构造函数中的this 指向obj执行构造函数内语句若构造函数中没有reutrn 或return this或基本类型(number、string、boolean、null、undefined)的值,则返回obj在堆中的内存地址;若return 引用类...原创 2019-01-24 11:51:46 · 2592 阅读 · 0 评论 -
js addEventListener事件捕获与冒泡,第三个参数详解,阻止事件传播
结论element.addEventListener(event, function[, useCapture])event:事件名称,如clickfunction:指定要事件触发时执行的函数,可以传入事件参数useCapture:可选。布尔值,指定事件是否在捕获或冒泡阶段执行。默认false:在冒泡阶段执行指定事件true:在捕获阶段执行事件event.stopPropagat...原创 2019-01-22 12:36:18 · 10082 阅读 · 3 评论 -
vue如何引入echarts(vue+webpack4.0+iview2.14+vuex+es6+stylus架构三)
第一步:引入echart依赖cnpm i echarts --save第二步:使用ecahrtsrc/main.jsimport echarts from 'echarts'Vue.prototype.$echarts=echarts解释: 在main.js中引入echarts, 然后赋值到Vue的原型上面,在页面就可以使用this.$echarts获取到了第三步:实例效果和代码<...原创 2018-05-25 15:00:19 · 3107 阅读 · 0 评论