
js
文章平均质量分 67
liuyaqi1993
生于忧患。
展开
-
Number.MAX_SAFE_INTEGER与Number.MAX_VALUE
Number.MAX_SAFE_INTEGER 9007199254740991,小于该值能精确表示Number.MAX_VALUE 1.7976931348623157e+308,大于该值得到的是Infinity,介于Infinity和安全值之间的无法精确表示。111111111111111111111111111111111111111111111111111111原创 2016-11-10 16:52:18 · 3575 阅读 · 1 评论 -
使用 async await + setTimeout 分割 while 循环
由于JavaScript单线程的特性,在执行CPU密集型任务时(如大数组排序)会阻塞网页的渲染,解决办法一般是使用setTimeout函数对任务进行分割,或者把这类任务交由 web worker 处理。今天遇到一个对大数组排序的问题,需要使用任务分割来避免阻塞,在这里记录下我的实现方法。在实现时我将 while 语句进行了分割,避免出现大循环体语句一直进行计算,主要代码如下: // ...原创 2018-03-27 16:42:14 · 5895 阅读 · 4 评论 -
关于document的三个方法:open、write、close
document.open会打开一个新文档,清除已加载的文档;document.write在HTML加载后调用会导致open方法调用一次;document.close会关闭打开的文档。原创 2017-10-21 15:34:07 · 4203 阅读 · 0 评论 -
探究 Content-Disposition:解决下载中文文件名乱码
直接在Content-Disposition中设置中文会导致乱码。通过Character Set and Language Encoding for Hypertext Transfer Protocol (HTTP) Header Field Parameters 中的规定设置了正确的的编码方式,从而实现正确显示中文。原创 2017-10-18 17:28:05 · 28368 阅读 · 2 评论 -
前端预览PDF:PDFObject、PDF.js
object、embed、iframe这几个标签能实现PDF文件的预览(无需JavaScript支持),但是都受限于浏览器的支持。PDFObject是一个通过embed标签实现PDF预览的js库,速度较快。对于不支持PDF预览的浏览器则可以通过PDF.js来进行预览,其实现是基于Canvas 。原创 2017-09-03 16:53:40 · 49338 阅读 · 14 评论 -
常用MIME类型
MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型。是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。比如前端直接原创 2017-09-07 12:34:43 · 430 阅读 · 0 评论 -
一个NW.js+Webpack+Gulp+React的Hello World
结合所学的Webpack、Gulp、React、Materialize、Babel这些工具在NW.js平台上写一个新工程Hello world,以后会在这个工程基础上用不同的分支做点小程序。原创 2017-09-14 16:53:48 · 3410 阅读 · 5 评论 -
我的THREE.js之旅01
教材:Three.js开发指南第一章 example 01.01 body{ margin: 0; overflow: hidden; } $(function(){ var scene=new THREE.Scene();原创 2015-06-22 14:21:45 · 770 阅读 · 0 评论 -
JavaScript模拟函数重载
在Java等语言里面实现函数的重载是比较简单的,参数数量不同就能实现同名函数的重载,而JavaScript中的参数本质上还是arguments这个类数组的引用,不能直接更具参数数量的不同而达到重载,这里使用的闭包实现函数重载:一层一层去寻找合适的函数去执行,代码如下:function setOverload(target, fn) { //注意,target只是原函数的引用,修改这个引原创 2017-04-24 22:49:56 · 958 阅读 · 0 评论 -
JavaScript数据结构之 无向图
/** * 无向图 * * 广度优先搜索:初始化每个点的标记为未检查,选一个起始点入队列,贴上待检查标记, * 然后该点出队列,寻找所有标记为未检查的相邻点并将其入栈(同时修改其标记为待检查), * 对于已经出队列的点,标记为已检查。终止条件:队列为空 * * 深度优先:采用迭代的方式,类似于树的遍历,但是要在遍历过程中检查当前点是否已经并遍历过 */function Grap原创 2017-04-06 16:50:12 · 1160 阅读 · 0 评论 -
JavaScript运算符优先级与结合性
JavaScript中的优先级、结合性、计算顺序原创 2017-04-05 12:26:54 · 857 阅读 · 0 评论 -
给定入栈顺序求所有出栈可能性
以前很少接触算法,没有遇到过这种问题,但是,在做美团、CVTE的前端笔试题时,都遇到过这种智力题:根据规律求括号中的数:1,1,2,5,14,()我怎么知道这个规律会是:-_-||(看来我基础确实不好)所以连续懵逼两次,后来再做另外一道题的时候才了解到这个数列 ”卡塔兰数”。。。题目是这样的:已知入栈顺序是1,2,3,4,5,6,7 ,求出栈可以有多少种,答案就原创 2017-03-25 20:30:38 · 13295 阅读 · 0 评论 -
JavaScript数据结构之 二叉排序树
/** * 二叉排序树(Binary Sort Tree)又称二叉查找树(Binary Search Tree),亦称二叉搜索树。 * 左边子节点的值 父节点的值 右边子节点的值 * 包括的方法有:插入、遍历、查询、查询父节点、右树上最小节点、 * 前中后序遍历、清空、删除、是否为空、求宽度、求深度 */function BinarySortTree(value){ this原创 2017-04-01 17:37:50 · 576 阅读 · 0 评论 -
模拟实现Promise
最近复习了一下Promise,决定自己实现一下,加深对Promise流程的理解。当然,这个模拟还不是很完善。/** * 使用MyPromise模拟Promise基本功能: * MyPromise新建就立即执行其参数fn,这点比较重要 * fn里面必须调用状态函数resolve或者reject之一 * 每次.then接受一个处理MyPromise当前状态的回调函数,包括resolve和rej原创 2017-03-30 17:27:21 · 1591 阅读 · 0 评论 -
JavaScript数据结构之 堆排序
以前没学过这种排序,今天看了一下,最好、最坏时间复杂度都是nlog2n。原理可以参考这篇博客,里面的图不错 http://blog.youkuaiyun.com/xiaoxiaoxuewen/article/details/7570621/JavaScript实现:/** * 对数组中的前n项整理成堆 * @param array * @param n */function re原创 2017-04-07 16:45:40 · 1676 阅读 · 0 评论 -
javascript类与继承
"父类" function Foo(name){ this.name = name; } Foo.prototype.myName = function(){ return this.name; }; //让Bar继承Foo function Bar(name, label){ Foo.call(th原创 2017-01-12 11:09:03 · 360 阅读 · 0 评论 -
javascript中对象连等问题 ==
看到一篇有意思的博客,记录下其中的两个例子var a = {n: 1};a.x = a = {n: 2};console.log(a.x);//undefinedvar a, b, c, d;a = b = c = d = {a: 1};a.x = a = b.y = b = c.z = c = {}console.log(a, b, c, d);//undefined,undefi转载 2016-11-10 20:08:31 · 488 阅读 · 0 评论 -
JavaScript Proxy: 修改实例属性、方法
Proxy介绍:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Proxy直接上代码:function createProxyClass(TargetClass, proxyHandler) { const _constructor = TargetClass; ...原创 2019-07-03 17:09:41 · 1759 阅读 · 1 评论