js
文章平均质量分 73
游走走
这个作者很懒,什么都没留下…
展开
-
从一个简单的反爬小技巧说起
最近修仙时发现了很多有意思的反爬技巧,今天就从一个最简单的反爬技巧说起:debugger。1、反爬开始debugger 是个断点调试语句,在正常情况下是不会被触发的,只有当有调试器可用的时候,如用户打开了控制台,才会进入断点调试。只有一句debugger,用户点一下蓝色小箭头就可以跳过。但,如果我们有无数debugger呢?没错,就是这么粗暴:const debug = new Function('debugger');setInterval(debug, 0);这里用定时器不断调用原创 2021-10-29 14:50:39 · 320 阅读 · 0 评论 -
当我们谈Currying时,我们在谈些什么
在数学中,函数是集合到集合的映射,即集合 A 中的元素,经过处理后,映射到集合 B 中的元素。可以简单表示如下:f(A)->B函数式编程,顾名思义,就是用函数的方式去编程。关于函数式编程的起源可以追溯到20世纪初的λ演算。在λ演算中,函数只有一个参数,为了实现多参数,于是出现了函数的柯里化(currying),本质上是单参数函数的语法糖。所谓柯里化,可以理解为把多参数的函数,转换成单参数的函数链,简单表示如下:f(X1, X2, …, Xn)->->g(X1)(X2)…(Xn原创 2021-10-22 11:25:23 · 157 阅读 · 1 评论 -
硬核!手撕源码第一弹:UpdateNotifier
目录项目简介源码分析动手实现总结1、项目简介update-notifier是yeoman团队出品的,之所以选择这个项目,主要是大佬推荐,其次是,项目体积只有15.3kB,功能也不复杂,在github上目前有1.6k star,比较适合当作入门源码。update-notifier用于检查包的当前版本是否是最新版本,如果不是,则提示更新。这个项目的使用场景一般是脚手架应用,可以在npm主页上看到有哪些项目用到了update-notifier:我去考证了一下,实际上npm只在早期版本原创 2021-10-02 11:11:24 · 784 阅读 · 0 评论 -
这锅我背了......
目录防抖(debounce)节流(throttle)防抖和节流的区别上周写了个表单,没仔细看Toast的遮罩配置,以为和之前一样都是默认开启的,然而实际上是被关了,又因为我偷懒没给按钮加防抖节流,于是出现了用户重复提交多条数据的情况…默默掏出小本本记下仇:究竟谁关了我的遮罩按钮 一定要记得加防抖节流!!!好了,言归正传,来复习下防抖节流。1、防抖防抖,debounce。这个概念最早来自于相机,现在流行的相机防抖原理也分很多种,有镜头防抖、机身防抖等,我们代码里的防抖比较类似软件防抖:原创 2021-08-23 15:45:19 · 122 阅读 · 0 评论 -
requestAnimationFrame
目录浏览器渲染过程requestAnimationFrame应用案例:进度条&文字跑马灯浏览器兼容性1. 浏览器渲染过程浏览器通过http请求获取到资源之后,会将HTML解析成一棵DOM树,并根据CSS构建一棵CSSOM树,然后将DOM树和CSSOM树结合,组合成一棵Render树;再根据Render树进行布局(layout),即确定每个树节点的宽、高、位置及元素之间的位置关系(第一次确定节点的大小和位置称为布局。随后对节点大小和位置的重新计算称为重排(reflow),也有些文章称之原创 2021-08-15 09:32:43 · 488 阅读 · 0 评论 -
ES2021新特性解读
目录提案流程ES2021新特性提案流程一个新特性从提出到最终纳入标准,需要经历5个步骤:ECMAScript标准是TC39(ECMA国际组织第39号技术委员会)制定的,更多有关提案的信息可以到官网上查看:https://www.ecma-international.org/technical-committees/tc39/。ES2021新特性截止目前,2021年已有5个新特性到了stage4:String.prototype.replaceAll2021Promise.any原创 2021-08-04 17:42:15 · 1487 阅读 · 0 评论 -
node+express连接mysql数据库并实现get请求demo
npm install mysql --save安装成功后// dao.jsvar $sql = require('./sqlMapping'); // 这个文件是定义sql语句的var mysql = require('mysql');// 采用连接池连接var pool = mysql.createPool({ host: '127.0.0.1', user: 'root', password: '123456', database: 'database_te原创 2021-03-02 17:25:24 · 272 阅读 · 0 评论 -
Javascript标准内置对象Proxy
Proxy 对象用于创建一个对象的代理,从而实现基本操作的拦截和自定义(如属性查找、赋值、枚举、函数调用等)。语法:const p = new Proxy(target, handler)target:要使用 Proxy 包装的目标对象(可以是任何类型的对象,包括原生数组,函数,甚至另一个代理)。handler:一个通常以函数作为属性的对象,各属性中的函数分别定义了在执行各种操作时代理 p 的行为。handler 对象的方法handler 对象是一个容纳一批特定属性的占位符对象。它包含有原创 2021-01-24 22:16:54 · 130 阅读 · 1 评论 -
【Javascript】Object.prototype
几乎所有的 JavaScript 对象都是 Object 的实例;一个典型的对象继承了Object.prototype的属性(包括方法)。存在两种不具备原型链的创建Object的方法:Object.create(null)和Object.setPrototypeOf(obj, null)。通过Object.create(null)创建的对象没有prototype:var a = Object.create(null);var b = {}console.log(a); // 没有prototy原创 2021-01-19 22:31:33 · 1239 阅读 · 0 评论 -
【Javascript】Object.defineProperty()
语法:Object.defineProperty(obj, prop, descriptor)返回参数中的obj。obj:要定义的对象;prop:要定义或修改的属性的名称(或者Symbol);descriptor:要定义或修改的属性描述符。descriptor里有以下几种选项:configurableenumerablevaluewritablegetsetJavascript对象有两种描述符:数据描述符和存取描述符。数据描述符没有get和set选项,存取描述符没有valu原创 2021-01-19 01:17:22 · 241 阅读 · 0 评论 -
【Javascript】Object.freeze()
Object.freeze() 方法可以冻结一个对象。一个被冻结的对象再也不能被修改;冻结了一个对象则不能向这个对象添加新的属性,不能删除已有属性,不能修改该对象已有属性的可枚举性、可配置性、可写性,以及不能修改已有属性的值。此外,冻结一个对象后该对象的原型也不能被修改。freeze() 返回和传入的参数相同的对象。语法:Object.freeze(obj)返回被冻结的对象obj。⚠️注:在ES5中如果参数不是对象,会报TypeError错误,在ES6中则会把非对象参数简单地返回。数值描述符,属原创 2021-01-19 01:15:52 · 163 阅读 · 0 评论 -
AngularJS1关闭控制台打印
原问题:https://stackoverflow.com/questions/15561853/how-to-turn-on-off-log-debug-in-angularjsangular.module('app').config(function($logProvider, $provide){ $logProvider.debugEnabled(false); ...原创 2018-08-13 09:43:08 · 499 阅读 · 0 评论 -
简单的浏览器打印demo(兼容chrome/IE/firefox,表现略有差异)
目前在chrome/IE11/firefox下都能运行,但效果略有差异,只有chrome有预览功能。 chrome效果: firefox效果: IE效果图: 代码:<!doctype html><html lang='en'><head> <meta charset='UTF-8'> <meta na...原创 2018-05-16 17:55:52 · 4805 阅读 · 0 评论