自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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关注的人

提示
确定要删除当前文章?
取消 删除