- 博客(25)
- 收藏
- 关注
原创 手写promise
function Promise(executor) { var self = this; self.status = 'pending'; self.onResolvedCallback = []; self.onRejectedCallback = []; function resolve(value) { if (value instanceof Promise) { return value.then(resolve, reject); } setTimeout(fun
2021-04-09 16:23:43
176
原创 数组排序
冒泡排序var arr = [1, 3, 6, 3, 23, 76, 1, 34, 222, 6, 456, 221];function sort(arr) { const len = arr.length; if (len < 2) return arr; for (let i = 0; i < len; i++) { for (let j = 0; j < i; j++) { if (arr[j] > arr[i]) { const temp = .
2021-04-09 14:53:21
137
原创 手动实现promise.all和promise.race
function myAll(iterators) { const promises = Array.from(iterators); const len = promises.length; let count = 0; let results = []; return new Promise((resolve, reject) => { promises.forEach((v, i) => { Promise.resolve(v).then(value => {
2021-04-08 19:25:33
338
原创 理解React框架的Fiber架构
如图所示,同步渲染的递归调用栈是非常深的,只有最底层的调用返回了,整个渲染过程才会开始逐层返回。这个漫长且不可打断的更新过程,将会带来用户体验层面的巨大风险:同步渲染一旦开始,便会牢牢抓住主线程不放,直到递归彻底完成。在这个过程中,浏览器没有办法处理任何渲染之外的事情,会进入一种无法处理用户交互的状态。因此若渲染时间稍微长一点,页面就会面临卡顿甚至卡死的风险。而 React 16 引入的 Fiber 架构,恰好能够解决掉这个风险:Fiber 会将一个大的更新任务拆解为许多个小任务。每当执行完一个小任务时
2021-03-15 18:21:10
1097
3
原创 为什么要用react-hooks
回答面试官问:告别难以理解的 Class;解决业务逻辑难以拆分的问题;使状态逻辑复用变得简单可行;函数组件从设计思想上来看,更加契合 React 的理念
2021-03-12 19:48:26
188
原创 redux原理
先看一张图~~~~使用 createStore 来完成 store 对象的创建reducer 的作用是将新的 state 返回给 storeaction 的作用是通知 reducer “让改变发生”派发 action,靠的是 dispatchimport { createStore } from 'redux'// 创建 reducerconst reducer = (state, action) => { // 此处是各种样的 state处理逻辑 return
2021-03-12 19:00:53
236
原创 发布-订阅(超级容易理解)
class myEventEmitter { constructor() { // eventMap 用来存储事件和监听函数之间的关系 this.eventMap = {}; } // type 这里就代表事件的名称 on(type, handler) { // hanlder 必须是一个函数,如果不是直接报错 if (!(handler instanceof Function)) { throw new Error("哥 你错了 请传一个函数"
2021-03-12 18:11:26
167
转载 Promise限流并发
promise-limit用法npm install promise-limitvar promiseLimit = require('promise-limit')var limit = promiseLimit(2)var jobs = ['a', 'b', 'c', 'd', 'e']Promise.all(jobs.map((name) => { return limit(() => job(name))})).then(results => { cons
2021-03-10 17:08:51
774
原创 js之发布-订阅模式
class EventEmitter { constructor() { // 事件池 this._events = Object.create(Object.create(null)); } // 绑定事件 on(eventName, callback) { if (this._events[eventName]) { this._events[eventName].push(callback); } else { this._events[eventName] =
2021-03-04 16:53:49
232
1
原创 事件循环event loop
所有同步任务都在主线程上执行,形成一个执行栈。主线程之外,还存在一个任务队列(事件)。只要异步任务有了运行结果,就在任务队列之中放置一个事件。一旦执行栈中的所有同步任务执行完毕,系统就会读取任务队列,将队列中的事件放到执行栈中依次执行。主线程从任务队列中读取事件,这个过程是循环不断的。整个的这种运行机制又称为Event Loop(事件循环)。...
2021-03-03 16:53:22
264
3
原创 实现发布订阅
let _subscribe = function(){ class Sub { constructor() { //创建一个事件池,用来存储后期需要执行的方法 this.$pond = []; } // 向事件池中追加方法(重复处理) add(func) { let flag = this.$pond.some(item => item === func); !flag ? this.$pond.push(func) : null; .
2021-03-02 17:14:24
162
原创 正向代理和反向代理的区别
正向代理意思是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理。反向代理反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的地址,也无须在用户端作任何设定。反向代理服务器通常可用来作为Web加速..
2021-03-01 14:29:16
972
10
原创 5年前端心得体会
从事前端开发5年半了,可我现在内心慌得一批,没有核心竞争力,感觉和3年开发经验的差不多,没有记笔记的习惯,距离上次发文已近4年,这中间我都做了什么?目前任职一家外包公司,月入左右,主要做一些管理页面的开发,各种表格、表单,其实这几年也一直倾向后台管理页面方向,除了这些我好像不会其他什么了,目前技术栈react+antd,职业生涯中,移动端就做了几个页面,全都是pc端,框架到是全用过了,只限于会用,源码看不懂,这几个月听了珠峰的架构课,讲到深入就听不懂了,听懂的过一遍就忘了。现在特别迷茫,到今年9月份就6年
2021-02-24 14:34:35
818
1
原创 h5定位
1、根据当前所处位置 定位所在城市信息<html> <head> <meta charset="UTF-8" /> <title>js 百度 geolocation 定位当前城市</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta n
2017-06-07 16:26:41
2460
原创 substring()和slice()的区别
一、substring()是截取字符串var s = 'hello, world's.substring(0, 5); // 从索引0开始到5(不包括5),返回'hello's.substring(7); // 从索引7开始到结束,返回'world'二、slice()是截取数组var arr = ['A', 'B', 'C', 'D', 'E', 'F', 'G'];arr.slice(0,
2017-06-07 10:25:23
5400
5
原创 js面向对象
JS面向对象的几种写法 JS 中,面向对象有几种写法。归纳下,大概有下面这几种:工厂模式,构造函数模式,原型模式,构造函数与原型模式的混合使用,原型链继承,借用构造函数继承。一、工厂模式闭包使用的原理与之很相似,最后返回的function person (name,age,jpb){ var o={};//定义o这个对象 o.name=name; o.age=age; o.
2017-06-06 10:42:07
275
原创 Nicescroll滚动条插件的用法
Nicescroll滚动条插件是一个非常强大的基于JQUERY的滚动条插件,不需要增加额外的css,几乎全浏览器兼容。ie6+,实现只需要一段代码,侵入性非常小,样式可完全自定义,支持触摸事件,可在触摸屏上使用。官网地址:http://www.areaaperta.com/nicescroll/引入核心文件,插件需要引入1.5.X以上版本的jquery库最简单的用法如下:$(document).re
2017-06-06 10:29:51
469
原创 javascript Date format(js日期格式化)
方法一:// 对Date的扩展,将 Date 转化为指定格式的String.// 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符. // 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字). // 例子: // (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 20
2017-06-06 10:21:34
414
原创 日期时间函数
js日期时间函数var b = new Date(); //获取当前时间b.getTime(); //获取时间戳b.getFullYear(); //获取年份b.getMonth()+1; //获取月份b.getDate(); //获取天b.getHours(); //获取小时b.getMinutes(); //获取分钟b.getSeconds(); //获取秒数b.getDay(); //获取星期
2017-06-06 10:09:49
389
原创 js函数递归
一、递归函数概念:自己调用自己。二、知识说明function fuc(){ fuc(); console.log("a");}fuc();三、函数+变量//用递归来求5的阶乘function func(n){ if(n = 1){ return 1; } return n * func(n-1);}console.log(func(5
2017-06-06 09:50:11
353
转载 cesium.js获取经度、纬度、高度
function getPosition() { //得到当前三维场景 var scene = viewer.scene; //得到当前三维场景的椭球体 var ellipsoid = scene.globe.ellipsoid; var entity = viewer.entities.add({
2016-11-22 10:00:13
2795
原创 无缝滚动
js代码$(function() { var $this = $(".renav"); var scrollTimer; $this.hover(function() { clearInterval(scrollTimer); }, function() { scrollTimer = setInterval(functi
2016-11-14 18:07:45
253
转载 javascript闭包
闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。下面就是我的学习笔记,对于Javascript初学者应该是很有用的。一、变量的作用域要理解闭包,首先必须理解Javascript特殊的变量作用域。变量的作用域无非就是两种:全局变量和局部变量。Javascript语言的特殊之处,就在于函数内部可以直接读取全
2016-11-14 16:51:17
213
转载 apply()与call()的区别和用法
主要我是要解决一下几个问题:1.apply和call的区别在哪里2.什么情况下用apply,什么情况下用call3.apply的其他巧妙用法(一般在什么情况下可以使用apply)我首先从网上查到关于apply和call的定义,然后用示例来解释这两个方法的意思和如何去用.apply:方法能劫持另外一个对象的方法,继承另外一个对象的属性.Function
2016-11-14 14:44:08
403
原创 签到
大家好!做前端开发两年了,从没有做过系统的培训和学习,从一个门外汉硬是挤进这个互联网行业了,之间的波折想必和我一样的人都会有感触,学习的过程零零碎碎,用到哪学到哪,也会去提前学习一些新东西、新技术,以前一直是看别人的博客,以后我没事也写写,把自己遇到的问题和总结的经验和大家分享分享,大家一起进步。
2016-09-28 11:03:03
275
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅