- 博客(24)
- 收藏
- 关注
原创 手把手教你Promise的具体实现
一. Promise 与 Promise/A+Promise是JS异步编程中的重要概念,异步抽象处理对象,是目前比较流行Javascript异步编程解决方案之一。Promise/A+ 是 Promise 最小的一个规范。包括- Promise 状态- then 方法- Promise 解析过层只有一个then 方法, 没有catch、race、all等方法ECMAscript 6 P...
2019-08-18 22:40:29 417 1
原创 史上最清晰的——JS数据类型的判断方法
js的数据类型js数据分为两种类型:原始数据类型和引用数据类型。原始数据类型有:string、number、boolean、undefined和null引用数据类型有:Function、Object、Date、RegExp、Number、String、Boolean和自定义类等js类型判断typeof()函数instanceofObject.prototype.toString...
2019-06-03 16:24:42 264
原创 深入理解javascript原型继承
深入理解javascript原型继承什么是面向对象?生成对象的方式JavaScrip原型链(prototype chain)原型链的工作原理什么是面向对象? 在基于类的面向对象方式中,对象(object)依靠类(class)来产生。 而在基于原型的面向对象方式中,对象(object)则是依靠 构造器(constructor)利用 原型(prototype)构造出来的。生成对象的方式1,...
2019-05-31 18:42:09 374
原创 js通过文件的url下载文件到本地
同源单文件针对单文件的情况下,同源的文件,可以通过 < a> 标签的 download 属性下载文件const elt = document.createElement('a');elt.setAttribute('href', url);elt.setAttribute('download', 'file.png');elt.style.display = 'none';...
2019-03-25 15:31:57 20620
原创 数组常用操作
数组常用操作1,数组去重1.1 set去重var arr = [1,2,1,1,22,4,5,6];arr1 = [...new Set(arr)];1.2 结合使用数组filter方法和indexOf()方法var arr = [1, 2, 3, 2, 6, '2', 3, 1];function uniqueArr (arr) { return arr.filter(...
2019-03-13 15:56:05 296
原创 JavaScript数据类型检测汇总
JavaScript数据类型检测汇总数据类型检测1.1 typeof1.2 instanceof1.3 Object.propotype.toString1.4 constructor1.5 propotype数据类型检测1.1 typeoftypeof操作符返回一个字符串,表示未经计算的操作数的类型;1.2 instanceofvar str = "This is a simple ...
2019-03-13 15:18:24 422
原创 响应式布局
Element Query合理的单位搭配Absolute Size & Percent:绝对尺寸与百分比尺寸在移动端开发中,笔者最早是倾向于用百分比布局,这样相较于传统的绝对布局肯定是具有一定灵活性,Responsive Size:响应式尺寸Media Query:媒介查询>CSS Media Queries for i...
2018-06-29 14:41:51 349
原创 js作用域
1,词法作用域的规则,即函数被执行时(executed)使用的作用域链(scope chain)是被定义时的scope chain,而不是执行时的scope chain2,在js中,没有块级作用域 ,只有函数作用域。可以采用“立即执行函数Immediately-Invoked Function Expression (IIFE)”的方式创建作用域。...
2018-03-21 09:08:44 187
原创 arguments详解
类数组对象:arguments总所周知,js是一门相当灵活的语言。当我们在js中在调用一个函数的时候,我们经常会给这个函数传递一些参数,js把传入到这个函数的全部参数存储在一个叫做arguments的东西里面,那么这到底是什么东西?在js中万物皆对象,甚至数组字符串函数都是对象。所以这个叫做arguments的东西也是个对象,而且是一个特殊的对象,它的属性名是按照传入参数的序列来的,第1个...
2018-03-20 18:24:30 589
原创 js扁平化数组去重 超屌的
var arr = [[1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14]]]], 10]; var newArray = []; function getArray(array) { array.forEach(function(e) { if (typeof e === "object"...
2018-03-19 19:45:48 365
原创 JavaScript高级程序设计总结
//将其他进制的数值换算成十进制: parseInt(“AF”, 16); //175 //将十进制数值换算成其他进制的数值: var num = 10; num.toString(2);//”1010”null == undefined;//trueNumber(null);//0 Number(undefined);//NaNNumber(“”);//0 parseIn...
2018-03-19 17:59:52 333
原创 JS数组方法总结
数组常用的方法: concat();//连接2个或更多数组,并返回结果 every();//对数组中的每一项运行给定函数,如果该函数对每一项都返回 true ,则返回 true filter();//对数组中的每一项运行给定函数,返回该函数会返回 true 的项组成的数组 forEach();//对数组中的每一项运行给定函数。这个方法没有返回值 join(...
2018-03-19 17:45:42 899
原创 深入探讨浏览器渲染原理 repaint 和 reflow
浏览器渲染原理浏览器解析大概的工作流程大致可归纳为四个步骤: 1. 解析HTML以构建DOM树:渲染引擎开始解析HTML文档,转换树中的html标签或js生成的标签到DOM节点,它被称为 – 内容树。 2. 构建渲染树:解析CSS(包括外部CSS文件和样式元素以及js生成的样式)成样式结构体,根据CSS选择器计算出节点的样式,创建另一个树 —- 渲染树(render tree)。 ...
2018-03-09 23:00:51 271
原创 javascript如何拼接对象属性到url/url如何把参数解析成对象???
将一个对象拼接在url的后面function createURL(url, param) { var urlLink = ''; $.each(param, function(item, key) { var link = '&' + item + "=" + key; ...
2018-03-09 18:01:08 9335
原创 深入理解JS中的变量作用域
作用域变量的作用域有两种:全局变量和局部变量。全局变量最外层函数定义的变量拥有全局作用域,即对任何内部函数来说,都是可以访问的: var n=10; function f1(){ console.log(n); } f1(); // 输出10,说明全局变量n在函数内部被读取局部变量局部变量:在函数内部声明的变量。函数内部的变量,外部无法读取。 f...
2018-03-07 14:33:17 269
原创 CSS实现单行、多行文本溢出显示...的总结
css实现单行文本溢出显示…效果图如下: 实现方法: overflow: hidden; text-overflow:ellipsis; white-space: nowrap; 还需要加宽度width属来兼容部分浏览。css实现多行文本溢出显示…效果图如下: 实现方法: display: -webkit-box; -w...
2018-03-06 17:25:06 350
原创 一看就知道的——JS判断是否在微信浏览器中打开
js如何判断是否在微信浏览器中打开?判断客户端or服务端module.exports = { CLIENT: typeof window !== 'undefined', SERVER: typeof window === 'undefined'}客户端的全局变量为window 服务端的全局变量为globaljs判断是否在微信浏览器中打开fu
2018-02-07 16:19:37 540
原创 你所不知道的JS中的!!
我们都知道:!!一般用来将后面的表达式强制转换为布尔类型的数据(Boolean),也就是true或者false; var a; var b=!!a;a默认是undefined !a是true, !!a则是false,所以b的值是false,而不再是undefined,
2018-02-07 16:11:38 201
原创 简易实用的Web Notification桌面通知
Web Notification桌面通知项目需要,要利用google的notification实现新消息桌面提醒功能,之前研究了一下H5的Web Notification发现很简单,项目上线好久忘截图,直接上核心代码:if (window.Notification) { document.getElementById('audio').play(); //音
2018-02-05 19:45:28 962
原创 看了就明白的DOM事件流
Dom事件流DOM事件流包括三个阶段。1,事件捕获阶段:从最上层元素,直到最下层元素。路过的所有节点都可以捕捉到该事件。2,处于目标阶段:事件到达目标节点时,就到了目标阶段,事件在目标节点上被触发3,事件冒泡阶段:事件在目标节点上触发后,不会终止,一层层向上冒,回溯到根节点。demo演示html 代码:<div class="a"> <li class="b">...
2018-02-05 19:05:42 309
原创 绝无前例的Webpack总结
什么是WebPack,为什么要使用它?WebPack可以看做是模块打包机:它做的事情是,分析你的项目结构,找到JavaScript模块以及其它的一些浏览器不能直接运行的拓展语言(Scss,TypeScript等),并将其转换和打包为合适的格式供浏览器使用。 Webpack的工作方式是:把你的项目当做一个整体,通过一个给定的主文件(如:index.js),Webpack将从这个文件开始找到你的项目的...
2018-02-04 23:38:28 322
原创 实用的组件——手写原生的调整字体组件
component系列——调整字体先放效果图:组件是用vue写的哦,字体分为0,1,2,3档: A A A A 标准 中 大 超大
2018-02-02 19:00:33 497
原创 JS系列——通知中心消息推送
最近APP要实现查看通知中心消息推送的功能:项目使用Vue,数据来源于native客户端,进入通知列表页面需要直接滚动到最后一条信息列表,基于此,我们可以想到scrollTo(x,y)方法,给y值一个超大值,那么页面就会滚到内容的最下面。那么这样做有什么问题呢?测试中,我们发现打开页面并没有直接滚动到页面底部,这是因为vue从挂载对象到渲染数据有一个过程。所
2018-02-02 16:34:36 2297
原创 JS系列——深拷贝和浅拷贝,实用实用实用
关于深拷贝和浅拷贝?对象复制分为深拷贝和浅拷贝,示意图如下:浅拷贝只复制指向某个对象的指针,而不复制对象本身,新旧对象还是共享同一块内存。深拷贝会另外创造一个一模一样的对象,新对象跟原对象不共享内存,修改新对象不会改到原对象。简而言之,浅拷贝复制的对象和原对象共享内存,深拷贝复制的对象和原对象不共享内存深拷贝var m = { a: 5, b: 10 }var n = {a:m.a,b:m.b}...
2018-02-02 15:46:16 244
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人