自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(8)
  • 收藏
  • 关注

原创 数组API

filterArray.prototype.myFilter = function (callback, thisArg) { const res = [] const obj = new Object(this) const len = obj.length >>> 0 // 无符号右移0位,保证为0或正整数 for (let i = 0; i < len; i++) { if (i in obj) { if (callback.call(t

2020-10-08 13:01:23 82 1

原创 call、apply和bind

callFunction.prototype.myCall = function (context, ...args) { if (typeof this !== 'function') { throw new TypeError('Not a function') } const fn = Symbol('fn') // Symbol防止重复 context[fn] = this // this是调用call的函数 const res = context[fn](...arg

2020-10-07 22:48:54 68

原创 Promise封装原生ajax

  原生ajax是XMLHttpRequest,监听readyStateChange事件,关注readyState和status。const ajax = url => { return new Promise((resolve, reject) => { const xhr = new XMLHttpRequest() xhr.open('GET', url, true) // open xhr.setRequestHeader('Accept', 'applic

2020-10-07 15:26:11 197

原创 深拷贝和深度比较

深拷贝const checkType = source => Object.prototype.toString.call(source).slice(8, -1)const deepClone = source => { let target = null const sourceType = checkType(source) if (sourceType === 'Object') { target = {} } else if (sourceType ===

2020-10-07 15:20:46 93

原创 节流和防抖

节流const throttle = (fn, interval) => { let last = Date.now() return function () { const self = this // 保存this const args = arguments // 保存arguments const now = Date.now() if (now - last > interval) { last = now fn.app

2020-10-07 15:12:27 39

原创 setTimeout模拟setInterval

setInterval存在的问题  首先明确,无论setTimeout还是setInterval,都是在指定时间,将回调函数推入任务队列,无法保证实际执行时间。  区别在于,setTimeout直接推入,setInterval会检查任务队列中是否存在相同的回调函数(未执行),若有则跳过本次推入。  上图中,setInterval的时间间隔是200ms,但回调函数执行需要较长时间,605ms推入时,发现405ms的回调函数仍未执行,因此跳过本次推入。  由此会引发多个回调函数执行的时间间隔,小于设定

2020-10-07 15:12:21 579

原创 数组操作

扁平化Array.prototype.flat参数传入Infinityconst flattern = arr => arr.flat(Infinity)正则表达式消除数组中的左右括号,简单粗暴const flattern = arr => JSON.parse('[' + JSON.stringify(arr).replace(/\[|\]/g, '') + ']')reduceconst flattern = arr => { return arr.re

2020-10-07 15:12:15 46

原创 jsonp

const jsonp = ({url, params, callbackName}) => { const generateUrl = () => { // 解析参数,生成script标签的src let dataStr = `` for (let key in params) { dataStr += `${key}=${params[key]}&` } dataStr += `callbackName=${callbackName}`

2020-10-07 15:12:09 78

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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