Csy Blog

---

闭包和高阶函数

1. 高阶函数 什么是高阶函数? 函数可以作为参数传递 函数可以作为返回值输出 1.1 函数作为参数传递 即经常用到的回调函数 1.2 函数可以作为返回值输出 “无论通过何种手段将内部函数传递到所在的词法作用域以外,它都会持有对原始定义作用域的引用,无论在何处执行这个函数都会使用闭包。” – 《你不知道的javascript》 举例函数作为返回值输出: :chestnut:1...

JavaScript的reduce

前言 在《重构》这本书里,提到了一个重构的方法“以管道取代循环”,那么什么是管道呢?reduce是如何工作的? Array.reduce(callback[, initialValue]) reduce(归纳),为数组中的每一个元素执行callback方法,并将每次callback方法的返回结果,作为下一次调用callback方法的参数 (通常也把这种思想叫做管道机制pipeli...

CSS3实现环形倒计时、圆形进度条

需求 答题、问卷形式的活动经常用到的环形倒计时。进度条通常都是长条,有时候也有环形进度条的需求。倒计时是从有到无,相反的,进度条从无到有。实现方式差不多。 实现思路 如果只是实现一个圆环,可以这样写 1 2 3 4 5 6 7 8 9 <style type="text/css"> .circle { width : 200px; height :...

js检测浏览器切换到后台的方案

需求 游戏中播放背景音效,如果手机切换到其他程序,暂停背景音乐。手机回到游戏页面,播放背景音乐。 H5引入的Page Visibility API 这个 API 本身非常简单,由以下三部分组成。 document.hidden:表示页面是否隐藏的布尔值。页面隐藏包括页面在后台标签页中 或者 浏览器最小化(注意,页面被其他软件遮盖并不算隐藏,比如打开的 sublime 遮住...

理解Object.defineProperty()笔记

介绍 Object.defineProperty(obj, prop, descriptor)方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回这个对象。 这个方法允许修改默认的额外选项(或配置)。默认情况下,使用 Object.defineProperty() 添加的属性值是不可修改的。 Object.defineProperty()和点运算符为对象的属性赋值时,数...

call、apply、bind的实现

call、apply、bind 都用来改变函数体内部的this指向 第一个参数都是this,如果没有第一个参数,this 的值绑定为全局对象 都可以利用后续参数传参 call:fn.call(this,1,2,3) apply:fn.apply(this,[1,2,3]) bind:fn.bind(this)(1,2,3) ...

js事件循环

看了一些有关事件循环中函数执行顺序的问题,这里记录一下。 事件循环运行机制: Microtasks 和 Macrotasks 是异步任务的一种类型,Microtasks 的优先级要高于 Macrotasks,下面是它们所包含的api: microtasks主要包含:process.nextTick、promise、MutationObserver macrotask主要包含:script(...

使用svg实现点亮地图效果

前言 产品小姐姐提了个需求,希望实现一个地图,根据数量显示每一块有多少人,并用6种深浅不一颜色的颜色表示。奇形怪状的点击域+改变图片的颜色,自然而然就想到用SVG啦。 在Web中显示SVG有六种方式 直接使用<svg>元素 将SVG图像作为背景图像嵌入 1 background-image:url(test.svg) 使...

前端加密

0x00 前言 加密算法越快,破解起来就越容易。加密时多花一点时间,就可以换取攻击者大量的破解时间。加密越慢,破解时间越长。「慢加密」算法例如 bcrypt、scrypt 等等。它们都有一个难度系数因子,可以控制加密时间,想多慢就多慢。 但慢加密也有明显的缺点:消耗大量计算资源。使用慢加密的网站,如果同时来了多个用户,服务器 CPU 可能就不够用了。要是遇到恶意用户,发起大量的登录请求,...

object、param、embed等视频音频标签

1、< object > 定义一个嵌入的对象,比如图像、音频、视频、Java applets、ActiveX、PDF 以及 Flash。 1.1 示例 1 2 3 <object data="move.swf" type="application/x-shockwave-flash"> <param name="foo" value="bar">...