随笔分类 -  JavaScript学习心得

摘要:插件是库和框架的常见功能,并且有一个很好的理由:它们允许开发人员以安全,可扩展的方式添加功能。这使核心项目更具价值,并建立了一个社区——所有这些都不会增加额外的维护负担。那么如何去构建一个插件系统呢?让我们用 JavaScript 构建一个我们自己的插件来回答这个问题。 一、如何构建一个简单的插件系 阅读全文
posted @ 2020-11-25 16:03 古兰精 阅读(587) 评论(0) 推荐(0) 编辑
摘要:call、bind这类方法我们虽然在平时开发中用到的不多,但是在看框架源码时,我们会经常看到。比如我们经常在框架级的源码中看到类似如下的一句代码: var toStr1 = Function.prototype.call.bind(Object.prototype.toString); 在这一句代码 阅读全文
posted @ 2020-11-25 12:34 古兰精 阅读(165) 评论(0) 推荐(0) 编辑
摘要:引用《JavaScript 高级程序设计第四版》中说的话 ——“从简单的输入验证脚本到强大的编程语言,JavaScript 的崛起没有任何人预测到。它很简单,学会用只要几分钟;它又很复杂,掌握它要很多年。要真正学好用好 JavaScript,理解其本质、历史及局限性是非常重要的”。 试想一下,如果有 阅读全文
posted @ 2020-11-24 17:44 古兰精 阅读(244) 评论(0) 推荐(0) 编辑
摘要:再阅读之前,可以先看看之前总结的这篇,两篇结合,效果更好:JS中的单线程与多线程、事件循环与消息队列、宏任务与微任务 一、关于 JavaScript javascript是一门单线程语言,在最新的HTML5中提出了Web-Worker,但javascript是单线程这一核心仍未改变。 所以一切jav 阅读全文
posted @ 2020-11-24 11:19 古兰精 阅读(182) 评论(0) 推荐(1) 编辑
摘要:虽然 ServiceWorker 和 PWA 正在成为现代 Web 应用程序的标准,但浏览器资源缓存变得比以往任何时候都复杂。本文涵盖了浏览器缓存的重点内容,具体包括: ServiceWorker 缓存与 HTTP 缓存的优先级? 主流浏览器实现的 MemoryCache 和 DiskCache 在 阅读全文
posted @ 2020-11-23 17:18 古兰精 阅读(659) 评论(0) 推荐(0) 编辑
摘要:一、编译目标 目标:把源代码变成目标代码 1、如果源代码在操作系统上运行:目标代码就是“汇编代码”。再通过汇编和链接的过程形成可执行文件,然后通过加载器加载到操作系统执行。 2、如果源代码在虚拟机(解释器)上运行:目标代码就是“解释器可以理解的中间形式的代码”,比如字节码(中间代码)IR、AST语法 阅读全文
posted @ 2020-11-23 16:50 古兰精 阅读(2050) 评论(0) 推荐(0) 编辑
摘要:无论是浏览器控制台还是Node.js的服务端,我们会在各种地方看到JavaScript异常,异常处理是编写程序必备的基础能力,在学习异常处理之前,了解 JavaScript 中的几种异常类型是非常有必要的。 1、Error Error 是最基本的错误类型,其他的错误类型都继承自该类型。 Error  阅读全文
posted @ 2020-11-23 12:17 古兰精 阅读(1317) 评论(1) 推荐(0) 编辑
摘要:同源策略:使用过 Ajax 的同学都知道其便利性,可以在不向服务端提交完整页面的情况下,实现局部刷新,在当今 SPA 应用普遍使用,但是浏览器处于对安全方面的考虑,不允许跨域调用其它页面的对象,这对于我们在注入 iframe 或是 ajax 应用上带来不少麻烦。 简单来说,只有当协议,域名,端口号相 阅读全文
posted @ 2020-11-16 18:25 古兰精 阅读(5011) 评论(0) 推荐(0) 编辑
摘要:一、问题背景 在做表单校验长度的需求中,发现不同字符 length 可能大小不一。比如的 "𠮷".length 是 2(需要注意这里并不是一个中文字!) '吉'.length // 1 '𠮷'.length // 2 '❤'.length // 1 '💩'.length // 2 你可以看一下 阅读全文
posted @ 2020-11-16 17:30 古兰精 阅读(1130) 评论(0) 推荐(0) 编辑
摘要:一、JS 异常处理,为什么要处理异常? 对于 Javascript 而言,我们面对的仅仅只是异常,异常的出现不会直接导致 JS 引擎崩溃,最多只会使当前执行的任务终止。 1、当前代码块将作为一个任务压入任务队列中,JS 线程会不断地从任务队列中提取任务执行。 2、当任务执行过程中出现异常,且异常没有 阅读全文
posted @ 2020-11-16 16:21 古兰精 阅读(486) 评论(0) 推荐(1) 编辑
摘要:以前我们总说,JS是单线程没有多线程,当JS在页面中运行长耗时同步任务的时候就会导致页面假死影响用户体验,从而需要设置把任务放在任务队列中;执行任务队列中的任务也并非多线程进行的,然而现在HTML5提供了我们前端开发这样的能力 - Web Workers API,我们一起来看一看 Web Worke 阅读全文
posted @ 2020-11-12 13:24 古兰精 阅读(6388) 评论(0) 推荐(0) 编辑
摘要:昨天搞了个前端html转pdf的功能。略有所收,踩了一些坑,所以做些记录,为后来的兄弟做些提示。经过一番调研发现html导出pdf一般有这几种方式,各有各有优缺,下面简单介绍。 一、通过jsPdf实现 此种方案可以看昨天写的博客:jsPDF将html页面生成pdf文件的前端解决方案及html2can 阅读全文
posted @ 2020-11-10 17:18 古兰精 阅读(8787) 评论(0) 推荐(0) 编辑
摘要:jsPdf是一个可以把html转成pdf的插件,有人多人在用。 GitHub: https://github.com/MrRio/jsPDF 官方文档: http://raw.githack.com/MrRio/jsPDF/master/docs/ 但是老外做的很多东西没考虑过英文之外的语言,这个也 阅读全文
posted @ 2020-11-09 22:39 古兰精 阅读(7812) 评论(0) 推荐(0) 编辑
摘要:一般来说单点认证都需要两端来完成,在认证中心端的我们称之为SSO,在网站端的模块我们称之为PSO。 两个模块之间采用二次重定向技术来实现同步两端票据的方式来实现单点登陆。 为什么需要单点登录?产品刚上线时,一般由于用户量少,所有的功能都放在一起,一般也不需要具体的单点登录。随着用户量和业务发展的需要 阅读全文
posted @ 2020-08-12 13:26 古兰精 阅读(853) 评论(0) 推荐(1) 编辑
摘要:有这么个场景,公司下有多个不同域名的站点,我们期望用户在任意一个站点下登录后,在打开另外几个站点时,也是已经登录的状态,这么一过程就是单点登录。 因为多个站点都是用的同一套用户体系,所以单点登录可以免去用户重复登录,让用户在站点切换的时候更加流畅,甚至是无感知。 单点登录所要实现的就是,某一站点登录 阅读全文
posted @ 2020-08-12 11:46 古兰精 阅读(540) 评论(0) 推荐(0) 编辑
摘要:今天讲⼀些让您按捺不住和欲求不满的反浏览器追踪技术,揭开你是如果被互联网巨头监控的。 场景一:在⽹站上浏览了某个商品,了解了相关的商品信息,但并没有下单购买,甚⾄没有进⾏登录操作,过两天⽤同台电脑访问其他⽹站的时候却发现很多同类商品的⼴告。 场景二:在某博客中你有多个小号(水军),这些小号的存在就是 阅读全文
posted @ 2020-06-29 11:11 古兰精 阅读(972) 评论(0) 推荐(0) 编辑
摘要:一、JS的重载 这个是多态的基础,JS函数不支持多态,但是事实上JS函数是无态的,支持任意长度,类型的参数列表。如果同时定义了多个同名函数,则以最后一个函数为准。 1、什么是函数重载 重载函数是函数的一种特殊情况,为方便使用,C++允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的形式参 阅读全文
posted @ 2020-06-08 23:44 古兰精 阅读(4085) 评论(0) 推荐(0) 编辑
摘要:一、原型 任何对象都有一个原型对象,这个原型对象由对象的内置属性_proto_指向它的构造函数的prototype指向的对象 即任何对象都是由一个构造函数创建的,但是,不是每一个对象都有prototype,只有方法才有prototype。 function Person() { } var p = 阅读全文
posted @ 2020-05-31 16:31 古兰精 阅读(1767) 评论(0) 推荐(1) 编辑
摘要:我们知道,网页里的a标签默认在当前窗口跳转链接地址,如果需要在新窗口打开,需要给 a 标签添加一个target="_blank"属性。顺便提下一个有意思的现象,很早之前我就发现,国外网站倾向于在当前页跳转,而国内网站喜欢打开新窗口。不信你们可以去验证下。我不知道这是交互设计上的文化差异,还是技术上的 阅读全文
posted @ 2020-05-09 23:34 古兰精 阅读(2167) 评论(0) 推荐(0) 编辑
摘要:1、相关重点 DataTransfer 对象:拖拽对象用来传递的媒介,使用一般为Event.dataTransfer。 draggable 属性:就是标签元素要设置draggable=true,否则不会有效果,例如: <div title="拖拽我" draggable="true">列表1</di 阅读全文
posted @ 2020-05-08 22:29 古兰精 阅读(2606) 评论(0) 推荐(0) 编辑