JavaScript
文章平均质量分 51
javascript学习总结
yanzi_0216
这个作者很懒,什么都没留下…
展开
-
节流和防抖
节流和防抖https://zhuanlan.zhihu.com/p/501685828我之前一度不太理解节流和防抖之间的区别,老是容易把它们混为一谈函数防抖(在上一个函数触发后的规定时间之内,再次触发函数,则会重新计时,也就是函数会被推迟触发,只有事件间隔内的最后一次触发事件才会执行):将多次事件合并成了一个操作,本质上就是在维护一个延时器,规定在指定的时间后触发函数,但是如果在这个期间,事件被再次触发,就会取消之前的延时器从而重新计算时间,这样一来,实际上也就是只有最后一次事件才会执行。函数节原创 2022-06-06 21:59:19 · 286 阅读 · 0 评论 -
理解发布订阅模式
理解发布订阅模式原创 2021-01-14 19:52:15 · 253 阅读 · 0 评论 -
【手写 Promise】-- 深入理解 Promise
【手写Promise】-- 深入理解Promise在此之前,我对于 Promise 有些不求甚解,回顾了我之前写的 手写Promise 这篇文章,发现其错漏百出,我直接 “呵tui!” 。在写这篇文章之前,我看了很多网上的 “手写Promise” 代码,它们大多有以下的问题:回调的代码(then 方法中的函数参数)执行位置错误。比如我之前写的那篇。(回调的代码应该存入回调队列中,在 resolve 中需要清空一次回调队列;并且在 then 方法中,Promise 状态不为 PENDING 的情况下直原创 2022-04-19 22:16:50 · 688 阅读 · 0 评论 -
【你不知道的JS】-- 理解 try...catch...finally 语句
【你不知道的JS】-- 理解 try...catch...finally 语句finally 中的代码总是会在 try 之后执行,如果有 catch 的话则在 catch 之后执行。也可以将 finally 中的代码看作一个回调函数,即无论出现仕么情况最后定会被调用。try 代码块中没有 return 和 throw 语句时try 代码块中没有 return 和 throw 语句时,会首先执行 try 中的语句,如果在执行时抛出了错误就会被 catch 捕获并执行 catch 中的代码,最终执行 f原创 2022-04-16 20:30:37 · 396 阅读 · 0 评论 -
一些奇奇怪怪的 JavaScript 操作
一些奇奇怪怪的 JavaScript 操作在什么条件下if (a == 2 && a == 3) {}是成立的?先看一个奇怪的例子:// 重写 number 类型数据的 value0f 方法Number.prototype.value0f = function() { return 3 };new Number( 2 ) == 3; // true (!!!)2 == 3不会有这种问题,因为2和3都是数字基本类型值,不会调用 Number.prototype.value0原创 2022-04-16 19:53:48 · 1082 阅读 · 2 评论 -
对象的 valueOf 方法
对象的 valueOf 方法Object.prototype.valueOf()该方法返回指定对象的原始值,若对象没有原始值,则将返回对象本身。通常由 JavaScript 内部调用,而不是在代码中显式调用。当遇到需要使用预期的原始值的对象时(比如对象的强制类型转换),JavaScript 会自动调用它。不同类型对象的 valueOf() 方法的返回值对象返回值Number数字的基本类型值Boolean基本类型布尔值String基本类型字符串RegExp原创 2022-04-16 16:48:42 · 1331 阅读 · 0 评论 -
使用展开运算符拷贝对象
使用展开运算符拷贝对象展开运算符可用于具有 iterator 接口(可遍历数据类型)的数据的展开,比如展开数组而想要使用展开运算法展开一个 Object 对象类型是会报错的(但是在 React 中使用展开运算法展开一个对象,经过 babel 编译之后,是可以成功使用展开运算符展开一个对象的。但是这种方法仅适用于标签的属性传递,不能直接在 JS 语句中使用进行使用)但是可以通过花括号包裹的方式实现对一个对象字面量的浅拷贝//构造字面量对象时使用展开语法 let person = {name:'to原创 2021-02-01 10:41:37 · 821 阅读 · 0 评论 -
JS 中 event.target 与 event.currentTarget 的区别
JS 中 event.target 与 event.currentTarget 的区别event.target 返回触发事件的元素(在点击事件中,就相当于被你点击的那个元素对象)event.currentTarget 返回绑定事件的元素,即事件的委托对象(绑定了事件处理函数的元素)<!DOCTYPE html><html><head> <meta charset="utf-8"> <title>JS Bin</titl原创 2021-01-31 21:00:24 · 356 阅读 · 0 评论 -
高频面试题之this指向问题
高频面试题之this指向问题想要理解this,你可以先记住以下三点:1:this永远指向一个对象;2:this的指向完全取决于函数调用的位置;3:立即执行函数中的this指向window。先来看几道题目题目一被 let 声明的变量不会作为全局对象 window 的属性,而被 var 声明的变量却可以所以题目中 全局中的 length 变量必须用 var 声明后续才可以使用,否则会出现新的情况,后续题目五会涉及到var length = 10function fn() { retur原创 2021-01-15 18:01:54 · 1041 阅读 · 1 评论 -
JS 中 bind 函数连续调用的问题
JS 中 bind 函数连续调用的问题let a = 'a-window'const o = { a: 'a-o'}const c = { a: 'a-c'}function test() { console.log(this.a)}test.bind(o).bind(c)()上述执行结果是 ‘a-o’ 而不是 ‘a-c’原因是,在Javascript中,多次 bind() 是无效的。更深层次的原因, bind() 的实现,相当于使用函数在内部包了一个 call / app原创 2021-01-14 21:26:24 · 1036 阅读 · 0 评论 -
理解浏览器事件循环 event loop
理解浏览时事件循环 event loop浏览器事件循环机制浏览器事件循环机制:js任务分为同步任务和异步任务,同步任务会直接进入 js 主线程执行,形成一个执行栈,当前一个任务执行完,后一个任务才会执行。异步任务不直接进入主线程,它会先在Event Table中注册回调函数,然后进入任务队列中,等执行栈中为空后,任务队列中的函数就会进入主线程中执行。宏任务:script(整体代码),setTimeout,setInterval,ie支持的setImmediate,MessageChannel,原创 2021-01-14 21:11:27 · 117 阅读 · 0 评论 -
原生AJAX
原生AJAX发送 post 请求var xhr = new XMLHttpRequest()// open 方法的第一个参数的作用就是设置请求的 methodxhr.open('POST', './add.php')// 设置请求头中的 Content‐Type 为 application/x‐www‐form‐urlencoded// 标识此次请求的请求体格式为 urlencoded 以便于服务端接收数据xhr.setRequestHeader('Content‐Type', 'applic原创 2021-01-14 15:52:56 · 127 阅读 · 0 评论 -
防抖和节流
防抖和节流https://www.jianshu.com/p/c8b86b09daf0https://www.cnblogs.com/coco1s/p/5499469.htmlhttps://blog.csdn.net/hupian1989/article/details/80920324防抖(Debouncing)防抖技术即是可以把多个顺序地调用合并成一次,也就是在一定时间内,规定事件被触发的次数。// 简单的防抖动函数function debounce(func, wait, imme原创 2021-01-06 22:11:36 · 104 阅读 · 0 评论 -
eval()函数的作用
eval()函数的作用eval()函数功能是将某段字符串当成JS语句来执行。eval() 函数计算 JavaScript 字符串,并把它作为脚本代码来执行。如果参数是一个表达式,eval() 函数将执行表达式。如果参数是Javascript语句,eval()将执行 Javascript 语句。var a=eval("12"); //相当于 var a=12;var obj = eval("({name:'nick',age:28})"); //相当于 var obj = {name:'nick原创 2020-09-05 16:39:37 · 12206 阅读 · 0 评论