随笔分类 -  JavaScript学习心得

摘要:首先了解下let与var的区别,主要有以下3点: 1、var在js中是支持预解析的,而let不支持预解析,也就是变量提升的区别 console.log(a) var a = 22; // 打印undefined console.log(b) let b = 22 // 报错:b is not def 阅读全文
posted @ 2020-05-07 22:44 古兰精 阅读(714) 评论(0) 推荐(0) 编辑
摘要:我们在接触到JavaScript语言的时候就经常听到别人介绍JavaScript 是单线程、异步、非阻塞、解释型脚本语言。 确切的说,对于开发者的开发过程来说,js确实只有一个线程(由JS引擎维护),这个线程用来负责解释和执行JavaScript代码,我们可以称其为主线程。 代码在主线程上是按照从上 阅读全文
posted @ 2020-04-27 23:15 古兰精 阅读(1581) 评论(0) 推荐(1) 编辑
摘要:前端持久化就是要将数据永久的保存在前端,让数据难以删除或者删除后能够重新恢复。存储的数据可以理解为是一种 “僵尸数据”,下面介绍一种前端持久化方法 -- evercookie。 一、简介 evercookie是由Samy Kamkar(美国白帽黑客、安全研究员)开发的一组jsApi,它的目的在于持久 阅读全文
posted @ 2019-12-27 16:56 古兰精 阅读(1179) 评论(0) 推荐(0) 编辑
摘要:一般情况下,网站或者广告联盟都会非常想要一种技术方式可以在网络上精确定位到每一个个体,这样可以通过收集这些个体的数据,通过分析后更加精准的去推送广告(精准化营销)或其他有针对性的一些活动。Cookie技术是非常受欢迎的一种。当用户访问一个网站时,网站可以在用户当前的浏览器Cookie中永久植入一个含 阅读全文
posted @ 2019-12-27 10:23 古兰精 阅读(1953) 评论(0) 推荐(0) 编辑
摘要:一、需求介绍 最近遇到了在不刷新页面的情况下修改浏览器url链接的需求,考虑到可以通过history.pushState()解决。现在将我理解的一些内容分享一下,不对的地方欢迎大家指出。 在使用方法前首先需要了解它的兼容性,history.pushState()存在一定的兼容性问题,可以通过 htt 阅读全文
posted @ 2019-10-25 18:28 古兰精 阅读(8294) 评论(0) 推荐(0) 编辑
摘要:一、window.open如何绕过浏览器拦截机制 在浏览器的安全机制里,非用户触发的window.open方法是会被拦截的,例如: var btn = $('#btn'); btn.click(function () { // 算做用户触发,所以不会被拦截 window.open('http://c 阅读全文
posted @ 2019-08-06 21:51 古兰精 阅读(5267) 评论(0) 推荐(0) 编辑
摘要:在前端开发中,性能一直都是被大家所重视的一点,然而判断一个网站的性能最直观的就是看网页打开的速度。其中提高网页反应速度的一个方式就是使用缓存。一个优秀的缓存策略可以缩短网页请求资源的距离,减少延迟,并且由于缓存文件可以重复利用,还可以减少带宽,降低网络负荷。 一、web缓存简介: web缓存是指一个 阅读全文
posted @ 2019-07-23 23:15 古兰精 阅读(447) 评论(0) 推荐(0) 编辑
摘要:1、内存的生命周期 无论你使用那种语言,内存的生命周期基本是都差不多:分配内存 —— 使用内存 —— 释放内存,以下是生命周期中每一步发生了什么的一个概述: Allocate memory —— 操作系统分配内存,允许你的程序使用它。在基础语言中(例如 C ),这是一个开发者自己处理的明确操作。然而 阅读全文
posted @ 2019-07-04 22:52 古兰精 阅读(2206) 评论(0) 推荐(1) 编辑
摘要:一、什么是内存泄漏 引擎中有垃圾回收机制,它主要针对一些程序中不再使用的对象,对其清理回收释放掉内存。那么垃圾回收机制会把不再使用的对象(垃圾)全都回收掉吗? 其实引擎虽然针对垃圾回收做了各种优化从而尽可能的确保垃圾得以回收,但并不是说我们就可以完全不用关心这块了,我们代码中依然要主动避免一些不利于 阅读全文
posted @ 2019-03-20 10:45 古兰精 阅读(2367) 评论(0) 推荐(0) 编辑
摘要:一、时区问题 1、问题背景: 服务器时间是东八区时间,页面会在全世界各地,页面 JS 功能需要对比服务器时间和用户本地时间,为兼容世界各地时间,需要将用户本地时间转换为东八区时间 2、基本概念 (1)格林威治时间:格林威治子午线上的地方时,或零时区(中时区)的区时叫做格林威治时间,也叫世界时。比如我 阅读全文
posted @ 2019-03-13 19:22 古兰精 阅读(22716) 评论(1) 推荐(1) 编辑
摘要:一、需求场景 Blob 的一个常用应用场景,就是获取剪切板上的数据来进行粘贴的操作。例如通过QQ截图后,需要在网页上进行粘贴操作。粘贴图片我们需要解决下面几个问题: 1、监听用户的粘贴操作 首先我们可以通过paste事件来监听用户的粘贴操作: document.addEventListener('p 阅读全文
posted @ 2019-02-26 21:43 古兰精 阅读(1724) 评论(0) 推荐(0) 编辑
摘要:首先说分片上传,我们在进行文件上传的时候,因为服务器的限制,会限制每一次上传到服务器的文件大小不会很大,这个时候我们就需要把一个需要上传的文件进行切割,然后分别进行上传到服务器。 假如需要做到这一步,我们需要解决两个问题: 怎么切割? 怎么得知当前传输的进度? 首先解决怎么切割的问题。因为File文 阅读全文
posted @ 2019-02-26 20:38 古兰精 阅读(3870) 评论(0) 推荐(0) 编辑
摘要:在 HTML5 File API 出现之前,前端对于文件的操作是非常有局限性的,大多需要配合后端实现。出于安全角度考虑,从本地上传文件时,代码不可能获取文件在用户本地的地址,所以纯前端不可能完成一些类似图片预览的功能。但是 File API 的出现,让这一切变成了可能。 1、FileList 对象 阅读全文
posted @ 2019-02-21 22:09 古兰精 阅读(6809) 评论(1) 推荐(0) 编辑
摘要:一、需求背景 有时候需要在前端侧对于动态生成的内容进行下载,比如页面上某一段文本信息,再比如对页面进行分享的时候,希望分享图片是页面内容的实时截图,此时,这个图片就是动态的,纯HTML显然是无法满足我们的需求的,借助JS和其它一些HTML5特性,例如,将页面元素转换到canvas上,然后再转成图片进 阅读全文
posted @ 2019-02-21 21:28 古兰精 阅读(7720) 评论(0) 推荐(1) 编辑
摘要:一、scrollIntoView简单使用 scrollIntoView方法滚动当前元素,进入浏览器的可见区域 el.scrollIntoView(); // 等同于el.scrollIntoView(true) el.scrollIntoView(false); 该方法可以接受一个布尔值作为参数。 阅读全文
posted @ 2019-01-03 17:16 古兰精 阅读(27999) 评论(1) 推荐(3) 编辑
摘要:一、回调函数 这是异步编程最基本的方法。 假定有两个函数f1和f2,后者等待前者的执行结果。 采用这种方式,我们把同步操作变成了异步操作,f1不会堵塞程序运行,相当于先执行程序的主要逻辑,将耗时的操作推迟执行。 利用定时器的工作原理将f1放入事件队列中去执行,哪怕延时是0,也是如此,因此不堵塞程序运 阅读全文
posted @ 2018-07-30 23:45 古兰精 阅读(21384) 评论(0) 推荐(4) 编辑
摘要:很多人不是特别明白并发编程和并行编程的区别所在,有很多人很容易搞混淆,觉得二者近似相等,本文将用几个浅显易懂的例子,来说明一下什么是并发和并行。 1、任务与多任务 关于什么是进程,什么是线程,这里不打算多说,关于每一种开发语言的多线程处理技术语法上有所区别,原理很多类似,可以查阅相关的参考书。什么是 阅读全文
posted @ 2018-07-30 16:02 古兰精 阅读(27211) 评论(4) 推荐(7) 编辑
摘要:1、$(document).ready 点评: 需要引用jquery ;兼容所有浏览器。 2、标签的async=”async”属性 async的定义和用法(是HTML5的属性) async 属性规定一旦脚本可用,则会异步执行。 点评:HTML5中新增的属性,Chrome、FF、IE9&IE9+均支持 阅读全文
posted @ 2018-07-27 23:28 古兰精 阅读(9464) 评论(0) 推荐(1) 编辑
摘要:一、bind()函数的两个特性: 1、bind和curring,函数科里化 可以利用此种特性方便代码重用,如下,可以不同的页面中只需要配置某几项,前面几项固定的配置可以选择用bind函数先绑定好,讲一个复杂的函数拆分成简单的子函数。 2、bind和new 函数中的return除非返回的是个对象,否则 阅读全文
posted @ 2018-07-27 22:52 古兰精 阅读(20518) 评论(1) 推荐(1) 编辑
摘要:前端缓存,这是一个老生常谈的话题,也常被作为前端面试的一个知识点。今天我们再来总结一下。 分类:前端缓存分为强缓存和协商缓存两种。 一、强缓存 强缓存主要使用 Expires、Cache-Control 两个头字段,两者同时存在 Cache-Control 优先级更高。当命中强缓存的时候,客户端不会 阅读全文
posted @ 2018-07-27 18:25 古兰精 阅读(3578) 评论(1) 推荐(1) 编辑