
javascript
你的微笑像拥抱
这个作者很懒,什么都没留下…
展开
-
react hook 简易实现
摘自:自顶向下学 React 源码<!DOCTYPE html><html lang="en"><head> <title>React App</title></head><body> <div id="root1"></div> <div id="root2"></div> <div id="a"> &原创 2021-06-14 23:41:18 · 394 阅读 · 3 评论 -
react input 格式化后光标错位
react input 格式化后光标错位问题修复。react 银行卡 格式化后 光标错位问题修复原创 2020-04-28 11:35:01 · 1567 阅读 · 0 评论 -
js 根据银行卡号 匹配 得到 所属银行名称
如有未涉及到的银行信息,请联系作者更新数据。const BANK_CARD_LIST = [ { bankName: "中国邮政储蓄银行", bankCode: "PSBC", patterns: [{ reg: /^(621096|621098|622150|622151|622181|622188|622199|...原创 2020-04-28 11:12:23 · 2027 阅读 · 0 评论 -
手机号、银行卡号 格式化 加空格 每四位一空格
xxxxxxxx.replace(/\s/g,'').replace(/(\d{4})(?=\d)/g,"$1 ")原创 2020-04-22 15:44:10 · 906 阅读 · 0 评论 -
跨域 post 请求 set cookie 无效
// 需要加这个字段xhrFields:{ withCredentials: true },原创 2020-04-16 15:42:04 · 993 阅读 · 0 评论 -
LeetCode 703. 数据流中的第K大元素 JavaScript
/** * 通过 * @param {number} k * @param {number[]} nums */function swap(arr, i, j) { [arr[i], arr[j]] = [arr[j], arr[i]];}// 调整堆function heapify(arr, len, i) { while (true) { if...原创 2020-04-12 14:24:38 · 308 阅读 · 0 评论 -
JS判断客户端是否是iOS或者Android
var u = navigator.userAgent;var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //android终端var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端alert('是否是Android:'+i...原创 2020-03-24 10:41:11 · 225 阅读 · 0 评论 -
js 手写 Object.is
Object在严格等于的基础上修复了一些特殊情况下的失误,具体来说就是+0和-0,NaN和NaN。function is(x, y) { if (x === y) { //运行到1/x === 1/y的时候x和y都为0,但是1/+0 = +Infinity, 1/-0 = -Infinity, 是不一样的 return x !== 0 || y !== 0...原创 2020-03-04 21:40:12 · 498 阅读 · 0 评论 -
js 手写 instanceof
function myInstanceof(left, right) { if(typeof left !== 'object' || left == null) { return false } let proto = Object.getPrototypeOf(left); while(proto) { if(proto === ...原创 2020-03-04 21:22:36 · 525 阅读 · 0 评论 -
js 手写 call apply bind
calllet obj = { name: 'xxx'}function sayName(prev) { console.log(prev, this.name)}Function.prototype.myCall = function (context) { context = context || window; let args = [...ar...原创 2020-02-23 20:22:16 · 476 阅读 · 0 评论 -
js 对象模拟 DOM 树 实现 render 方法 调用 render 方法将 js 对象转真正的 DOM 节点
var ul = el('ul', { id: 'list' }, [ el('li', { class: 'item' }, ['item 1']), el('li', { class: 'item' }, ['item 2']), el('li', { class: 'item' }, ['item 3']),])var ulRoot = ul.render();...原创 2020-02-23 15:15:06 · 894 阅读 · 0 评论 -
js 双向链表 插入 查找
function Node(value) { this.value = value; this.prev = null; this.next = null; return this;}function List() { this.head = new Node(null); this.insert = function(index, node...原创 2020-02-22 23:30:19 · 203 阅读 · 0 评论 -
js 手写 es6 模板字符串
// ES6 模板字符串let name = "小明";let age = 24;let temp = "hello, 我是 ${ name }, 今年 ${ age} 岁了, 五年以后我 ${age+5} 岁。";function fn(str) { console.log(str) return str.replace(/\$\{(.*?)\}/g, f...原创 2020-02-22 21:35:41 · 897 阅读 · 1 评论 -
base64相关
Base64图片编码原理:Base64编码要求把3个8位字节(38=24)转化为4个6位的字节(46=24),之后在6位的前面补两个0,形成8位一个字节的形式。 如果剩下的字符不足3个字节,则用0填充,输出字符使用’=’,因此编码后输出的文本末尾可能会出现1或2个’=’http://gj.3gwen.com/tpbase64.html?kbl=base64 里为什么需要每个 6 位二进制需要...原创 2020-02-16 22:30:22 · 172 阅读 · 0 评论 -
深度克隆 - 简单版本实现
深度克隆 - 简单版本实现let obj = { age: 5, getAge() { console.log(this.age) }, hobby: [1, 2, 3], home: { city: '北京' }}let obj2 = deepClone(obj)obj2.age = 10;obj2.hob...原创 2020-01-09 23:19:11 · 139 阅读 · 1 评论 -
co generator async await
async awaitcolet fs = require('fs');// let co = require('co');function readFile(filename) { return new Promise(function(resolve,reject) { fs.readFile(filename,'utf8',function(err,data)...原创 2020-01-09 23:17:56 · 317 阅读 · 0 评论 -
Promise
PromisePromise.jsconst PENDING = 'pending'; //初始态const FULFILLED = 'fulfilled'; // 成功态const REJECTED = 'rejected'; // 成功态function Promise(executor) { let self = this; //先缓存当前promise实例 sel...原创 2020-01-09 23:14:59 · 310 阅读 · 0 评论 -
事件发布订阅 哨兵函数
事件发布订阅 哨兵函数// 1. 通过事件发布订阅来实现// 这是 node 核心模块中的一个类,通过它可以创建事件发射器的实例,里面有两个核心方法,一个叫 on emit,on 表示注册监听,emit 表示发射事件/* let EventEmitter = require('events')let fs = require('fs')let eve = new EventEmitter...原创 2020-01-09 23:10:20 · 302 阅读 · 0 评论 -
高阶函数 闭包 延迟函数
高阶函数 闭包 延迟函数/* 1. 在 js 里,函数是一等公民,可以作为函数的返回值,也可以作为函数的参数*//* // 判断一个参数是否是字符串function isString(param) { return Object.prototype.toString.call(param) == '[object String]'}// 判断一个参数是否是数组fun...原创 2020-01-09 23:08:44 · 205 阅读 · 0 评论 -
Singleton 单例模式
Singleton 单例模式有关单例模式适用性描述如下:当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时。该唯一的实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时。Singleton 单例模式,限制了类的实例化次数只能一次。单例模式,在该实例不存在的情况下,可以通过一个方法创建一个类来实现创建类的新实例;如果实例已经存在,它会简单返回该对象的引...原创 2020-01-09 23:07:59 · 227 阅读 · 0 评论 -
generator 用法记录
generator 用法记录/* 生成器是一个函数,可以用来生成迭代器 生成器函数和普通函数不一样,普通函数是一旦调用一定会执行完 但是生成器函数中间可以暂停,可以执行一会歇一会*/// 生成器函数有一个特点,需要加个*// 生成器有若干个阶段,如可划分这些阶段嗯?function* go() { console.log(1) // 此处的 b ...原创 2020-01-09 23:05:35 · 264 阅读 · 0 评论 -
js中操作cookie
js中操作cookiecookie : 存储数据,可以设置存储时间的,当用户访问了某个网站(网页)的时候,我们就可以通过cookie来向访问电脑上存数据。跟我们的变量一样,不过变量在关闭浏览器的时候会消失,cookie如果设置了到期时间即使关闭浏览器也不会消失。不同的浏览器存放的cookie位置不一样,也是不能通用的cookie的存储是以域名形式进行区分的cookie的数据可以设...原创 2018-02-25 18:18:46 · 5290 阅读 · 2 评论 -
js原生ajax
AJAX准备工作-服务器环境的搭建ajax可以在本地使用,但是牵扯到不同源问题,需要跨域操作。下面是两个文件的代码,test.html放在桌面上,cors.php放在搭好的服务器上面,我这里配置的端口号是9096,端口号可以自行配置,默认的话是80端口,双击打开test.html文件,控制台会输出下面信息 {"code":200,"msg":"success"}test....原创 2018-02-26 20:58:41 · 8717 阅读 · 0 评论 -
js时间戳转天时分秒
function formatDuring(mss){ var days = parseInt(mss / (1000 * 60 * 60 * 24)); var hours = parseInt((mss % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)); var minutes = parseInt((mss % (1000原创 2018-02-02 08:23:28 · 21092 阅读 · 0 评论 -
js时间格式化
/** 公共方法* 当前时间格式化* var time1 = new Date().format("yyyy年MM月dd日 hh点mm分ss秒");* 输出 2017年10月04日 09点50分00秒* var time1 = new Date().format("yyyy-MM-dd hh:mm:ss");* 输出 2017-10-04 01:01:01* var time1 =原创 2018-02-02 08:23:13 · 4413 阅读 · 0 评论 -
js将number数值转化成为货币格式,货币格式化,金钱过滤器,货币过滤器,vue货币过滤金钱过滤全局和局部两种实现方式
js中使用js代码const digitsRE = /(\d{3})(?=\d)/gfunction currency (value, currency, decimals) { value = parseFloat(value) if (!isFinite(value) || (!value && value !== 0)) return '' currency = cu原创 2018-02-01 15:11:46 · 9335 阅读 · 1 评论 -
序列化和反序列化解决数组浅拷贝问题
序列化和反序列化解决数组浅拷贝问题JSON.stringify()和JSON.parse()原创 2017-08-13 19:03:09 · 7150 阅读 · 0 评论