js
gochanTao
good good study, day day up
展开
-
js 正则提取地区/地址字符串中的省份、城市、区、县等信息
直接上代码,一看就懂, 一般国内地址返回Array前三项就是省市县,若要扩展到社区、街道等可自行扩展。var add1 = '四川省成都市都江堰市天马镇34号';var add2 = '北京市北京市东城区前门大街1号'var add3 = '新疆维吾尔自治区乌鲁木齐市天山区中山路479号';var add4 = '四川省成都市双流县幸福社区23号';var add5 = '香港特别行政区中西区尖沙嘴路';var reg = /.+?(省|市|自治区|自治州|县|区)/g;console.log转载 2020-05-13 19:16:28 · 9967 阅读 · 5 评论 -
微信小程序中的Map结构使用Object.keys(map).length获取长度失效
普通 js 中的 Maplet a = new Map()a.set(1,{name:'cat'})console.log('1=',a) // 1= Map {_c: Map(1)}console.log('2=',Object.keys(a).length) // 2= 1console.log('3=',a.size) // 3= 1微信小程序中的 Maplet a = ne...原创 2020-03-25 22:42:27 · 2148 阅读 · 0 评论 -
如何将 swich 中的不同 case 合并,两种 case 执行的逻辑一样,以及范围取值
合并两种 case可以这样写:swich(n) { case 100: case 200: console.log('n 的值为 100 或 200 时会走这里'); break; case 300: // 其他逻辑 break;}判断取值范围 let a = 80 switch (true){ case a<60: console.log(...原创 2019-11-14 17:44:29 · 3547 阅读 · 0 评论 -
高性能JavaScript笔记之数据存取 (下)
什么是对象成员对象成员包括属性和方法。当一个被命名的的成员引用了一个函数,该成员就被称为一个“方法”,相反,引用了非函数类型的成员就被成为“属性”。对象成员可以分为两类,实例成员(也成为 own 成员)和原型成员,实例成员直接存在于实例成员中,原型成员则从对象原型继承而来。嵌套成员由于对象成员可能包含其他成员,例如不常见的写法:window.location.href。每次遇到点操作符,嵌套...原创 2019-10-20 22:07:40 · 299 阅读 · 0 评论 -
收集一些写得好的博客文章
1、es6之扩展运算符 三个点(…)原文链接原创 2019-10-24 21:27:51 · 162 阅读 · 0 评论 -
uni-app 的 nvue 页面如何调试
方法一:基于 weex 网页编辑器将 nvue 的内容拷贝到 weex 网页编辑器 ,删除 uni 相关的方法,手机使用 weex playground 扫描屏幕二维码即可在 weex 网页调试器进行调试方法二:全局安装 weex-toolkit 进行调试全局安装 weex-toolkit,安装 weex-toolkit创建工程,$ weex create my-project用 un...原创 2019-04-10 18:28:44 · 6930 阅读 · 1 评论 -
js 实现事件分发系统,要求包含三个最基本功能 on (监听事件), off (移出事件), emit (触发事件)
封装 EventEmitterclass EventEmitter { constructor() { this._events = {}; } on(event,callback) { //监听event事件,触发时调用callback函数 let callbacks = this._events[event] || []...转载 2019-05-15 21:15:17 · 2030 阅读 · 0 评论 -
js 将字符串复制粘贴到剪贴板
参考链接转载 2019-05-13 14:51:18 · 6547 阅读 · 1 评论 -
js 实现微信小程序接口 wx.setStorage(Object object)
首先创建一个 api.js 文件里面的代码如下:// api.jsvar wx = { setStorage: function(object) { let key = object.key, data = object.data localStorage.setItem(key, data) let result = localStorage.getItem(key)...原创 2019-08-28 18:44:32 · 1030 阅读 · 0 评论 -
前端面试题:JS中的let和var的区别
最近很多前端的朋友去面试被问到let和var的区别,其实阮一峰老师的ES6中已经很详细介绍了let的用法和var的区别。我简单总结一下,以便各位以后面试中使用。ES6 新增了let命令,用来声明局部变量。它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效,而且有暂时性死区的约束。先看个var的常见变量提升的面试题目:题目1:var a = 99; ...转载 2019-09-18 18:29:16 · 401 阅读 · 0 评论 -
淘宝接口 http://ip.taobao.com/service/getIpInfo.php?ip=myip 获取不到手机ip地址
客户端在请求头加上User-Agent试试:header: { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}原创 2019-09-18 18:15:56 · 11367 阅读 · 1 评论 -
高性能 javascript 之无阻塞加载 script
执行javascript的代码会阻塞其他文件的下载<script>标签每次出现都会霸道地让页面等待脚本的解析和执行,无论当前的javascript代码是内嵌还是包含在外链文件中,页面的下载和渲染都会停下来等待脚本执行完成。例如:这些看似正常的代码实际上有十分严重的性能问题:在<head>中加载三个javascript文件。由于脚本会阻塞页面渲染,...原创 2019-09-25 23:17:00 · 553 阅读 · 0 评论 -
高性能JavaScript笔记之数据存取 (上)
四种基本的数据存储位置数据的存储位置会很大程度上影响其读取速度。JavaScript 有四种基本的数据存储的位置:字面量。字面量只代表自身,不存储在特定位置。JavaScript 中的字面量有:字符串、数字、布尔值、对象、数组、函数、正则表达式,以及特殊的 null 和 undefined 值。本地变量。开发人员使用关键字 var 定义的数据存储单元。数组元素。存储在 JavaScrip...原创 2019-10-07 22:01:10 · 249 阅读 · 1 评论 -
原生 js 实现 h5 上拉加载以及 jQuery 实现列表回到顶部
实现原理当前滚动条的位置 + 当前可视范围的高度 = 文档的高度实现方法// 获取当前滚动条的位置 function getScrollTop() { var scrollTop = 0; if (document.documentElement && document.documentElement.scrollTop) { ...原创 2019-03-18 18:49:19 · 850 阅读 · 0 评论 -
vue 运行时报错: Cannot assign to read only property 'exports' of object 'Object'
背景用 vue-cli 搭建的 vue 项目,引用了第三方插件,npm run dev 之后一直报错 error:Cannot assign to read only property ‘exports’ of object ‘#’ ,查了好多资料好像是export和import共用了导致不兼容引起的,然后还是不起作用,最后参考了天地一扁舟的博客,完美解决。解决方法npm install b...原创 2019-03-13 10:07:34 · 4758 阅读 · 6 评论 -
懒加载与预加载的区别详细
懒加载1.什么是懒加载?懒加载也就是延迟加载。 当访问一个页面的时候,先把img元素或是其他元素的背景图片路径替换成一张大小为1*1px图片的路径(这样就只需请求一次,俗称占位图),只有当图片出现在浏览器的可视区域内时,才设置图片正真的路径,让图片显示出来。这就是图片懒加载。2....转载 2018-08-04 17:17:17 · 1530 阅读 · 0 评论 -
this指向详解及改变它的指向的方法
一、this指向详解this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象(这句话不那么严谨,作为一般情况下是可以的)再加下面的补充,就完美啦:情况1:如果一个函数中有this,但是它没有被上一级的对象所调用,那么this指向的就是window,这里需...转载 2018-08-04 21:25:59 · 379 阅读 · 0 评论 -
构造函数借用构造函数继承
上次博客跟大家分享了自己对原型链继承的理解,想看的同学欢迎猛击这里,上次说到原型链继承有一些问题,主要是两方面的。我们举个栗子来说明下:Q1:共享的超类属性能被任何实例改写,这个是很危险的!看下面一段代码:function Person(name){ this.name=name; this....转载 2018-08-04 23:51:05 · 610 阅读 · 0 评论 -
js 对象深度克隆
function clone(Obj) { var buf; if (Obj instanceof Array) { buf = []; //创建一个空的数组 var i = Obj.length; while (i--) { ...转载 2018-08-05 11:33:37 · 196 阅读 · 0 评论 -
HTTP状态码
100 Continue 继续,一般在发送post请求时,已发送了http header之后服务端将返回此信息,表示确认,之后发送具体参数信息200 OK 正常返回信息201 Created 请求成功并且服务器创建了新的资源202 Accepted 服务器已接受请求,但尚未处理301 Moved Permanently 请求的网页已永久移动到新位置。302 Foun...转载 2018-08-05 11:39:40 · 198 阅读 · 0 评论 -
js操作获取和设置cookie
//创建cookiefunction setCookie(name, value, expires, path, domain, secure) { var cookieText = encodeURIComponent(name) + '=' + encodeURIComponent(value); if (expires instanceof Date) { ...转载 2018-08-05 11:44:02 · 460 阅读 · 0 评论 -
性能优化问题
代码层面:避免使用css表达式,避免使用高级选择器,通配选择器。 缓存利用:缓存Ajax,使用CDN,使用外部js和css文件以便缓存,添加Expires头,服务端配置Etag,减少DNS查找等 请求数量:合并样式和脚本,使用css图片精灵,初始首屏之外的图片资源按需加载,静态资源延迟加载。 请求带宽:压缩文件,开启GZIP,...转载 2018-08-05 11:49:01 · 191 阅读 · 0 评论 -
Promise解决回调地狱
“回调地狱”是什么”回调地狱“也叫”回调金字塔“,我们平时写代码的时候 js如果异步 回调是不可避免的 例如 ajax不断的进行异步请求数据 回调方法里还要对数据进行处理,继续回调…形成回调地狱 这会使得我们的代码可读性变差,出现问题 不好调试 也会导致性能下降Promise是一个构造函数,用来传递异步操作消息,链式调用,避免层层嵌套的回调函数。promise接收两个函数参...转载 2018-08-05 14:56:17 · 1399 阅读 · 1 评论 -
深入解析Javascript异步编程
这里深入探讨下Javascript的异步编程技术。(P.S. 本文较长,请准备好瓜子可乐 :D)一. Javascript异步编程简介至少在语言级别上,Javascript是单线程的,因此异步编程对其尤为重要。拿nodejs来说,外壳是一层js语言,这是用户操作的层面,在这个层次上它是单线程运行的,也就是说我们不能像Java、Python这类语言在语言级别使用多线程能力。取而代之的是,nod...转载 2018-08-05 15:22:04 · 397 阅读 · 0 评论 -
js 数组去重
Array.indexOf() 去重/** 新建一新数组,遍历传入数组,值不在新数组就push进该新数组中* IE8以下不支持数组的indexOf方法* */function uniq(array){ var temp = []; //一个新的临时数组 for(var i = 0; i &lt; array.length; i++){ if(temp...原创 2018-08-05 16:10:01 · 166 阅读 · 0 评论 -
用promise手写ajax
function getJson(url){ return new Promise((resolve, reject) =>{ var xhr = new XMLHttpRequest(); xhr.open('open', url, true); xhr.onreadystatechange = function(){ ...转载 2018-08-05 23:31:33 · 426 阅读 · 0 评论 -
采用定时器返回 promise 会报错, Cannot read property 'then' of undefined
比如在 setInterval 或者 setTimeout 里 return new Promise, 然后调用该方法,就会报错,小程序里面会报 Cannot read property ‘then’ of undefined test: function () { setTimeout(()=&gt;{ return new Promise((resolve, rejec...原创 2019-02-26 14:02:34 · 15220 阅读 · 1 评论 -
实践过的跨域解决方案
方法一:采用动态插入 script 标签和执行回调函数跨域<script> var script = document.createElement('script'); script.type = 'text/javascript'; // 传参并指定回调执行函数为 cb script.src = url + '&callback=cb'; ...原创 2019-03-19 18:30:04 · 168 阅读 · 0 评论 -
理解JavaScript里的 [].forEach.call() (Array.prototype.forEach.call(...))写法
因为document.querySelectorAll()返回的并不是我们想当然的数组,而是NodeList,对NodeList,它里面没有.forEach方法,我们使用了这样的方法进行循环:var divs = document.querySelectorAll('div');[].for...转载 2018-08-04 17:11:08 · 6396 阅读 · 1 评论