# 思路 创建 XMLHttpRequest 实例 发出 HTTP 请求 服务器返回 XML 格式的字符串 JS 解析 XML 字符串 随着历史推进,XML 已经被淘汰,取而代之的是 JSON # 版本
instanceof 运算符用于检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上。
它让您能够把异步操作最终的成功返回值或者失败原因和相应的处理程序关联起来。...如果 promise 在一个相应的处理程序被绑定时就已经被兑现或被拒绝了,那么这个处理程序就会被调用,因此在完成异步操作和绑定处理方法之间不会存在竞争状态。...不过有时候我们因为需要马上处理一个错误也只能这样做。另一方面,在没有迫切需要的情况下,可以在最后一个.catch() 语句时再进行错误处理,这种做法更加简单。...Promise.all 方法常被用于处理多个 promise 对象的状态集合。...该构造函数会把一个叫做“处理器函数”(executor function)的函数作为它的参数。这个“处理器函数”接受两个函数——resolve 和 reject ——作为其参数。
创建一个对象类型,需要创建一个指定其名称和属性的函数;对象的属性可以指向其他对象,看下面的例子: 当代码 new Foo(...) 执行时,会发生以下事情:
# 思路 节流函数原理:规定在一个单位时间内,只能触发一次函数。如果这个单位时间内触发多次函数,只有一次生效 # 场景 拖拽 固定时间内只执行一次,防止超高频...
MDN 文档:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_...
console.log("array flat"); // 1. 因为只有数组才有 concat 方法,所以这里必须写入初始值 空数组 只能打平一层 // ...
只是有点复杂先用with,在用Proxy with with这个特性,也算是一个比较鸡肋的,他和eval并列为js两大SB特性. 不说无用, bug还多,安全性就没谁了......> 这样,就可以保证js脚本的执行,但是禁止iframe里的javascript执行top.location = self.location。...设置基本的安全特性 <iframe sandbox='allow-scripts' id='sandboxed' src='frame.html'> // js
我们来谈谈关于「JS手写」的相关知识点和具体的算法。 该系列的文章,大部分都是前面文章的知识点汇总,如果想具体了解相关内容,请移步相关系列,进行探讨。...文章list CSS重点概念精讲 JS_基础知识点精讲 网络通信_知识点精讲 好了,天不早了,干点正事哇。...new ES5、ES6继承 instanceof debounce & throttle reduce compose 合并对象 函数柯里化 深复制对象 Object.create 函数缓存 数组去重 手写...debounce(防抖):一个连续操作中的处理,「只触发一次」,从而实现防抖动。 throttle(节流):一个连续操作中的处理,「按照阀值时间间隔进行触发」,从而实现节流。...352" // "abc" Array.from与set去重 function unique(arr) { return Array.from(new Set(arr)) } ---- 手写
盘点那些 JS 手写题 1. JS 基础 1....它接受以下三个参数: element:数组中当前正在处理的元素。 index:可选。正在处理的元素在数组中的索引。 array:可选。调用了 filter 的数组本身。 thisArg:可选。...其他情况下都会返回一个「处理中(pending)」 的 Promise。...是此次传进来的数值5,m值还是上一步中的7,所以add(m+n)=add(7+5)=add(12),此时m=12,并且返回temp函数 由于后面没有传入参数,等于返回的temp函数不被执行而是打印,了解JS...将js对象转化为树形结构 // 转换前: source = [{ id: 1, pid: 0, name: 'body' }, { id: 2, pid: 1, name: 'title
initial-scale=1.0" /> Document // 手写实现
# 思路 防抖函数原理:在事件被触发 n 秒后再执行回调,如果在这 n 秒内又被触发,则重新计时 防抖动是将多次执行变为最后一次执行,节流是将多次执行变成每隔一...
第二篇文章是看了Express的基本用法,更主要的是看了下他的源码:手写Express.js源码 Express的源码还是比较复杂的,自带了路由处理和静态资源支持等等功能,功能比较全面。...从上面两个例子的代码来看,Koa跟Express有几个明显的区别: ctx替代了req和res 可以使用JS的新API了,比如async和await 手写源码 手写源码前我们看看用到了哪些API,这些就是我们手写的目标...本文的手写源码全部参照官方源码写成,文件名和函数名尽量保持一致,写到具体的方法时我也会贴上官方源码地址。...他是http模块的回调函数,所以他必须处理所有的网络请求,所有处理逻辑都必须在这个方法里面。...Express源码可以看我之前这篇文章:手写Express.js源码 Koa的思路看起来更清晰,Koa本身的库只是一个内核,只有中间件功能,来的请求会依次经过每一个中间件,然后再出来返回给请求者,这就是大家经常听说的
let paramsObj = {}; // 将 params 存到对象中 paramsArr.forEach(param => { if (/=/.test(param)) { // 处理有...= a - b判断是否是电话号码function isPhone(tel) { var regx = /^1[34578]\d{9}$/; return regx.test(tel);}手写...处理传入的参数,截取第一个参数后的所有参数。将函数作为上下文对象的一个属性。使用上下文对象来调用这个方法,并保存返回结果。删除刚才新增的属性。返回结果。...// 手写简化版// 节流函数const throttle = (fn, delay = 500) => { let flag = true; return (...args) => { if...是此次传进来的数值5,m值还是上一步中的7,所以add(m+n)=add(7+5)=add(12),此时m=12,并且返回temp函数由于后面没有传入参数,等于返回的temp函数不被执行而是打印,了解JS
var foo = { value: 1 }; function bar() { console.log(this.value); } bar.myCall(foo); // 1 处理参数...被调用对象接下来就负责处理这些参数。...如果参数数组非常大,可以使用混合策略:将数组切块处理 function minOfArray (arr) { var min = Infinity; var QUANTUM = 32768;
本文照例会从Express的基本使用入手,然后自己手写一个Express来替代他,也就是源码解析。...手写源码 手写源码才是本文的重点,前面的不过是铺垫,本文手写的目标就是自己写一个express来替换前面用到的express api,其实就是源码解析。...本文所有手写代码全部参照官方源码写成,方法名和变量名尽量与官方保持一致,大家可以对照着看,写到具体的方法时我也会贴出官方源码的地址。..., res); // 这是真正的服务器处理入口 }; 复制代码 app.handle app.handle也是挂载在app下面的,所以他实际也在application.js这个文件里面,下面我们来看看他干了什么..._router = new Router(); } } 复制代码 app.listen,app.handle和methods处理方法都在application.js里面,application.js
JavaScript进阶的必要性 无论是学习react还是vue,它们都是js的应用框架。...剥去他们的壳子看到的始终是js,所以作为一个前端大厨必须要熟练掌握好js这个大勺,才能烧出一顿好菜 无论是自我提升还是应付面试以下这些手写功能是每一个前端程序员必须掌握的 1....返回result 结果 return result } func.myApply(newObj,['55','yw']) // xmx 55 yw apply代码执行效果 图片 相关js视频讲解...节流和防抖也是闭包的应用 手写防抖代码参考 /*** * 手写防抖 */ const debounce = (func, delay) => { let timer = null; return...图片 手写节流 /*** * 手写节流 * 这里只需要注意和防抖不同的时 不会清除定时器 */ const throttle = (func, delay) => { let flag = false
今天分享一个 GitHub 上一个实用神器,可以让你的手写稿图片变清晰、图片大小变更小。 先来看下面的原图和效果图吧。 ? ?...作者是美国斯沃斯莫尔学院的教授,因为他经常会把他学生的一些优质手写笔记要挂到网上分享给其他的同学,但是这些手写稿经过扫描仪扫描后,图片质量比较差,而且文件还特别的大。.../noteshrink.py sourceImagePath -b resultImagePath sourceImagePath 表示你的原图路径, resultImagePath 表示图片处理后要保存的目录
# EventEmit export default class EventEmitter { constructor () { this.even...
手写 Promiseconst PENDING = "pending";const RESOLVED = "resolved";const REJECTED = "rejected";function...处理传入的参数,截取第一个参数后的所有参数。将函数作为上下文对象的一个属性。使用上下文对象来调用这个方法,并保存返回结果。删除刚才新增的属性。返回结果。...图片像dom的拖拽,如果用消抖的话,就会出现卡顿的感觉,因为只在停止的时候执行了一次,这个时候就应该用节流,在一定时间内多次执行,会流畅很多手写简版使用时间戳的节流函数会在第一次触发事件时立即执行,以后每过...expires: 5000})// 过期后再取出来会变为 falselet value = storage.getItem('name');console.log('我是value',value);实现一个JS...[a-zA-Z0-9_\-])+$/; return regx.test(email);}实现有并行限制的 Promise 调度器题目描述:JS 实现一个带并发限制的异步调度器 Scheduler
领取专属 10元无门槛券
手把手带您无忧上云