标签:JavaScript 13 篇
-
初探浏览器反截屏 录制技术
参考文章 DRM是什么? EME是什么? 关键词 EME DRM SetWindowDisplayAffinity How does Netflix prevent users from taking screenshots 优酷截图示例 使用截图工具后,视频会自动隐藏 gith
-
JS中如何使用emoji及unicode编码理解
前瞻 回顾第一章: 同一个字符的两种 UTF-8 编码 正文 😊 这是一个笑脸,它的编码如下 Unicode编码:1F60A UTF-8编码:F09F 988A UTF-16编码: D83D DE0A 概念 Unicode 使用四个字节为每个字符编码,UTF 是英
-
冒泡、捕获、事件委托
DOM事件流 事件流描述的是从页面中接收事件的顺序。 事件发生时会在元素节点之间按照特定的顺序传播,这个传播过程即DOM事件流。 包括三个阶段: 事件捕获阶段 处于目标阶段 事件冒泡阶段 我们知道,在dom模型中,html是多层次的,当一个html元素上产生事件时,该事件会在do
-
作用域和作用域链、原型和原型链
作用域和作用域链 ES6 之前 JavaScript 没有块级作用域,只有全局作用域和函数作用域。ES6的到来,为我们提供了‘块级作用域’,可通过新增命令let和const来体现。 函数作用域 静态作用域 要到创建这个函数的那个域”。 作用域中取值,这里强调的是“创建”,而不是“
-
数据类型有哪些?如何判断?如何转换?
数据类型 分为简单类型(基本类型)和复杂类型(引用数据类型) 基本类型:字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)、Symbol(ES6新增)。 复杂类型:对象(Object)、数组(Array)、函数(F
-
JS的节流、防抖及使用场景
函数防抖(debounce) 在事件被触发n秒后再执行回调,如果在这n秒内又被触发,则重新计时。 示例 function debounce(fun, delay) { return function () { clearTimeout(fun.id) fun.id = setTi
-
CommonJS 和ES6 MODULE的使用以及区别
CommonJS 使用方式 注意:是exports不是export 导出 //通过module.exports导出一个对象,对象存放功能函数或数据或某个具体的值 //引入时通过自定义变量obj.fn1()使用即可 module.exports = { fn1: function
-
闭包、柯里化、内存泄露、垃圾回收,一次全聊明白
本文涉及内容 闭包 柯里化 内存泄露 垃圾回收 阅读本文前,您需要对作用域和作用域链、原型和原型链有足够了解,见本博客另一篇文章,点这里,以及对this指向有足够了解,点这里 什么是闭包 能够访问其他函数内部变量的函数,被称为 闭包,简单来说,闭包就是函数内部定义的函数,被返回了
-
浏览器复制、剪切、粘贴事件简单操作示例
更多参考:点这里 复制、剪切、粘贴事件: copy 发生复制操作时触发; cut 发生剪切操作时触发; paste 发生粘贴操作时触发; 每个事件都有一个 before 事件对应:beforecopy、beforecut、beforepaste; 这几个 before 一般不怎么
-
JavaScript的eventloop复杂点
什么是eventloop 推荐:掘金文章 eventloop的概念其实很简单 (1)所有同步任务都在主线程上执行,形成一个执行栈(execution context stack)。 (2)主线程之外,还存在"任务队列"(task queue)。只要异步任务有了
-
JavaScript变量回收原则/垃圾回收机制
先看题目 下列代码存在几个变量没有被回收? var i = 1; var i = 2; var add = function() { var i = 0; return function() { i++; console.log(i); } }(); add(); 答案:3,全局
-
JavaScript内存管理
JavaScript并没有提供内存管理的接口,而是在创建变量时自动分配内存,当变量不再需要使用时自动释放,也就是我们所常说的垃圾回收机制。 但不管是什么程序语言,内存的声明周期都满足以下三个阶段: a.分配你需要的内存空间 b.使用分配到的内存(读、写) c.不需要时将其释放或归
-
【JavaScript】6种函数的调用方式和this指向
六种调用函数的方法 普通函数 function fn1(){ log(1); } 调用 : fn1(); this指向 : window 对象函数 var obj={ a : 0, b : 1, fn2:function(){ log(2); } } 调用 : obj.fn2()