
前端
文章平均质量分 64
codereasy
这个作者很懒,什么都没留下…
展开
-
解构与迭代器
【代码】解构与迭代器。原创 2023-09-17 15:50:14 · 128 阅读 · 0 评论 -
数组的解构
与对象解构的语法相比,数组解构就简单多了,它使用的是数组字面量,且解构操作全部在数组内完成,而不是像对象字面量语法一样使用对象的命名属性。在上面的代码中,我们从数组 list 中解构出数组索引 0 和 1 所对应的值并分别存储至变量 houseNo 和 street 中。这段代码中使用解构语法从数组 list 中获取索引 0 和索引 2 所对应的元素,原创 2023-09-14 19:11:46 · 552 阅读 · 0 评论 -
parseInt和Math.floor的区别
在大多数情况下,他们都可以用来取一个小数的整数部分,但是在某些特殊场景下,就只能使用math.floor。比如我们想取一个区间范围内的值,如果使用…首先我们还是从他们的原理开始看。Math.floor 它只是简单地将一个数向下取整到最接近的整数。它只接受一个参数:你想要向下取整的数。原创 2023-09-12 14:34:47 · 197 阅读 · 0 评论 -
对象的解构
【代码】对象的解构。原创 2023-09-10 19:21:49 · 153 阅读 · 0 评论 -
什么是柯里化
将一个函数转化成多个函数的连续调用。原创 2023-09-09 00:08:23 · 94 阅读 · 0 评论 -
call、apply、bind的区别
来调用的时候,say方法中的 this 是指向调用它的 obj 对象的,但是定时器 setTimeout 中的 say 方法中的 this 是指向window对象的(在浏览器中),这是因为 say 方法在定时器中是作为回调函数来执行的,因此回到主栈执行时是在全局执行上下文的环境中执行的,但我们需要的是 say 方法中 this 指向obj对象,因此我们需要修改 this 的指向。我们将obj.say方法传递给setTimeout。正常情况下,当我们通过。原创 2023-09-08 14:17:08 · 88 阅读 · 0 评论 -
内部函数[[Construct]]
在 ECMAScript 规范中,[[Construct]] 是一个内部方法,表示一个对象或函数是否可以作为构造函数来使用(即是否可以使用 new 关键字来创建新的对象实例)。在 JavaScript 中,不只是类 (class) 才有 [[Construct]] 内部方法。事实上,大多数的普通函数也是具有这个内部方法的,因此它们也可以用作构造函数。但是,箭头函数就是一个没有 [[Construct]] 内部方法的例子。// 下面的代码会抛出错误。原创 2023-09-06 11:34:20 · 174 阅读 · 0 评论 -
class与构造函数的相似性与区别
中所书写的代码,通过构造函数来模拟类,实例方法挂在原型上面,静态方法就挂在构造函数上。写法就是上面构造函数写法的一种语法糖,但是事实真的如此么?没错,我们是通过的构造函数,然后将方法挂在原型上面。出现之前,我们是如何实现类似于其他语言中的“类”的呢?如果使用ES6的class,应该如何书写代码呢?上面的代码非常的简单,我们定义了一个名为。上面的代码就是我们经常在。这两个实例属性,一个。原创 2023-09-06 09:42:39 · 169 阅读 · 0 评论 -
enumerable和 操作属性描述符
Object.defineProperties() 与 Object.defineProperty() 的主要区别在于,Object.defineProperties() 允许一次性为对象定义多个属性,而 Object.defineProperty() 一次只能定义一个属性。用于为对象添加一个新属性或修改一个已有的属性,并且可以详细地控制这个属性的特性。Object.getOwnPropertyNames可以遍历。Object.keys无法遍历,for…如果我们想获取某个对象的属性描述符。原创 2023-08-09 23:05:12 · 204 阅读 · 0 评论 -
JavaScript属性描述符【待补充】
很多学习过vue的同学,在学习vue响应式数据(或者双向绑定)的原理时,都接触过get,set,Object.defineProperty这句个函数,并且大概知道它们的用法。但是一提到属性描述符,大家就很陌生了。今天详细的给大家讲解一下什么事属性描述符。首先,属性描述符一共有6种value:设置属性值,默认值为undefined。writable:设置属性值是否可写,默认值为true。enumerable:设置属性是否可枚举.比如,是否允许使用for/in语句遍历访问,默认为true。原创 2023-08-06 22:17:38 · 252 阅读 · 0 评论 -
Dom事件的注册和移除【待修改】
DOM。原创 2023-08-06 00:05:07 · 514 阅读 · 0 评论 -
包装类型【待发布】
在之前的介绍中,我们知道了,数据的分类分为基本数据类型和引用类型。而基本包装类型,严格来说不属于上面两个中的任意一个,但又和两种类型关系米希尔。我们回忆一下,基本类型和引用类型最大的区别是什么?但基本数据类型真的就不能使用方法吗?上面的Number是一个基本类型,但是它却能调用toString()的方法。按照常理来说,字符串不是引用类型,所以它不应该有自己的方法,第二行代码应该报错才对。Number。原创 2023-08-06 00:00:27 · 178 阅读 · 0 评论 -
箭头函数的有点和缺点
由于箭头函数在定义的时候被绑定,下面两个场合不应该使用箭头函数。可以发现this是window对象。原创 2023-07-31 11:17:20 · 164 阅读 · 0 评论 -
箭头函数【第二章】this指向
箭头函数不会创建自己的this, 所以它没有自己的this,它只会在自己作用域的上一层继承this。所以箭头函数中this的指向在它在定义时已经确定了,之后不会改变。箭头函数可以让this指向固定化,这种特性很有利于封装回调函数。下面是一个例子,DOM 事件的回调函数封装在一个对象里面。箭头函数的this在定义时就被确定了。换而言之,在使用时无法改变箭头函数的this。原创 2023-07-29 21:28:41 · 84 阅读 · 0 评论 -
箭头函数第一章【什么是箭头函数】
上面代码中,最初的目的是返回一个对象{ a: 1 },但是由于JavaScript引擎认为大括号是代码块,所以执行了一行语句a: 1。如通箭头函数的点开多于一条语句,就要使用大括号将它们括起来,并且使用return语句返回。如果箭头函数的代码块只有1条语句,那么可以省略大括号,不仅如此,还可以省略return。由于大括号被解释为代码块,所以如果箭头函数直接返回一个对象,必须在对象外面加上括号才行。与普通函数的区别在于,箭头函数如果只有一个参数的时候,可以省略括号。虽然可以运行,但会得到错误的结果。原创 2023-07-29 11:45:12 · 75 阅读 · 0 评论 -
const定义的对象属性是否可以修改?
https://blog.youkuaiyun.com/qq_25643011/article/details/79426015原创 2023-07-28 20:56:06 · 896 阅读 · 0 评论 -
undefined、null、isNan
undefined是JavaScript的一个全局变量,也就是挂载在window对象上的一个变量,并不是关键字,这意味着可以使用 undefined 来作为一个变量名,但是这样的做法是非常危险的,它会影响对 undefined 值的判断。函数 isNaN 接收参数后,会尝试将这个参数转换为数值,任何不能被转换为数值的的值都会返回 true,因此非数字值传入也会返回 true ,会影响 NaN 的判断。JavaScript的最初版本是这样区分的:null是一个表示"无"的对象,转为数值时为0;原创 2023-07-27 11:26:04 · 221 阅读 · 0 评论 -
如何判断数组和对象
当调用 Object.prototype.toString.call(someObject) 时,实际上会调用 Object.prototype.toString 方法,并将。对于对象字面量,[[Class]] 的值是 “Object”。对于函数,[[Class]] 的值是 “Function”。对于字符串,[[Class]] 的值是 “String”。对于数字,[[Class]] 的值是 “Number”。对于数组,[[Class]] 的值是 “Array”。,然后返回一个字符串,表示该对象的类型。原创 2023-07-26 11:12:09 · 81 阅读 · 0 评论 -
清空数组的方法
splice表示起始位置,第二个参数表示删除的长度,第三个参数表示插入的元素。值得注意的是,splice方法会修改原数组,它的返回值是删除的元素。堆内存中的值其实没变。原创 2023-07-21 22:44:42 · 184 阅读 · 0 评论 -
Symbol类型
如果我们将 id 定义为数字类型,当他们id相同时,判断它们是否相等,结果肯定是相等的。// true但是如果我们将它们定义为symbol类型,那么它们的值是永远不会一样的。另外,我们在之前提到了,symbol类型属于基本类型。所以它不是对象,你是不能给它添加属性的。//这样的写法是错误的那么,有的同学可能会问,在上面的代码当中,如何区分 id1 和 id2 呢?我们声明的时候都是通过Symbol()创建的,似乎不太好区分。原创 2023-07-20 22:42:07 · 109 阅读 · 0 评论 -
【异步编程】async、await
async 用于声明一个异步函数,await 用于等待一个异步方法执行完成。当然语法上强制规定await只能出现在asnyc函数中,先来看看async函数返回了什么。通过执行结果我们可以发现,async 函数返回的是一个 Promise 对象。你可能会有疑问,在上例中,我们明明返回的是一个字符串“hello word”,并不是返回的 Promise 对象,为什么打印出来的结果是 Promise 对象呢?那是因为,如果在函数中 return 一个基本类型,async 会把这个直接量通过。原创 2023-07-14 17:21:59 · 136 阅读 · 0 评论 -
【异步编程】Promise
通过之前的例子,我们知道了,当在 Promise 内部调用 resolve 的时候,会执行 then 里面的回调函数,当在 Promise 内部执行 reject 的时候,会执行 catch 里面的回调函数。当数组中所有的promise的状态都达到resolved的时候,all方法的状态就会变成resolved,如果有一个状态变成了rejected,那么all方法的状态就会变成rejected。后一个请求需要依赖于前一个请求成功后,将数据往下传递,会导致多个ajax请求嵌套的情况,代码不够直观。原创 2023-07-14 15:58:41 · 1126 阅读 · 0 评论 -
【异步编程】什么是生成器和迭代器
通过调用生成器函数返回的迭代器对象iterator,我们可以通过多次调用迭代器的next()方法来遍历生成器函数的值。每次调用next()方法,都会返回一个包含当前值的对象和一个表示迭代是否完成的done标志。每次调用生成器函数时,会返回一个迭代器对象,通过迭代器的next()方法可以控制生成器函数的执行流程。迭代器是一种对象,它提供了一种按序访问集合元素的方法。next()方法返回一个包含value和done属性的对象,value表示当前迭代的值,done表示迭代是否完成。原创 2023-07-14 14:59:39 · 103 阅读 · 0 评论 -
【异步编程】1. 异步编程的实现方式
假设我们有这么一个场景:我们从前端发送一个网络请求,去服务器获取用户信息,服务器返回给前端数据后,前端打印用户的名称。原创 2023-07-14 14:55:42 · 97 阅读 · 0 评论 -
pnpm的原理和优势(monorepo)
硬连接:存储的物理磁盘上该文件的地址。比如这个文件是一个硬连接,通过它可以找到物理磁盘上该 mp4 数据的地址。软件连:是一个引用。它存储的是硬连接的地址。简而言之:它保存的是文件路径。如果将原文件删除,通过软链接无法再次打开原文件。原创 2023-06-15 20:31:40 · 542 阅读 · 0 评论 -
BFC的应用场景
简单来说就是,BFC是一个完全独立的空间(布局环境),让空间里的子元素不会影响到外面的布局。原创 2023-06-07 18:44:37 · 199 阅读 · 0 评论 -
JavaScript 垃圾回收机制
跟踪记录每个对象的引用次数,当一个对象的引用次数为0时,说明这个对象没有被其他对象引用,就可以被安全地回收了。在这个例子中,我们创建了三个对象:object1、object2 和 object3。。在引用计数的角度来看,object1的引用次数为0(没有其他对象引用它),object2的引用次数为1(被object1引用),object3的引用次数也为1(被object2引用)。现在,如果我们删除那么object2的引用次数变为 0,成为一个无法访问的对象,可以被垃圾回收器回收。原创 2023-05-31 22:05:10 · 232 阅读 · 0 评论 -
什么是闭包?常见应用常见?
闭包指的是:即便外部函数已经不存在,也可以获取作用域链上变量的函数。上面我们提到了一个概念,叫做。如果你不理解什么是在 f 函数内,我们并没有定义变量 a。当我们在 f 函数内 console.log(a) 的时候,为什么仍然能输出 1 呢?这就是的用途。当我们访问 a 的时候,如果在当前作用域内找不到 a,就在当前作用域的上一层去寻找 a。如果上一层也找不到,就再去上上层找。直到全局作用域都找不到 a,就返回 undefined。原创 2023-05-31 19:52:27 · 104 阅读 · 0 评论 -
parseInt()面试题,99%的人会做错!
如果大家第一次做这道题,几乎都会认为答案是[1,2,3]paseInt会把一个转化为。‘1’, ‘2’, ‘3’ 转化为整数分别是 1 , 2 , 3,所以以上代码会循环执行3次,分别返回 1 , 2 , 3。原创 2023-05-20 17:54:26 · 726 阅读 · 0 评论 -
HTTPS原理
如果有客户端的证书,就先验证客户端的证书。原创 2023-05-18 15:51:59 · 112 阅读 · 0 评论 -
什么是数字证书(Digital Certificate)?什么是数字签名(Digital Signature)
颁发者:CA证书授权(Certificate Authority)中心拥有者:申请到证书的通信者证书的作用:身份认证。表示我的身份被CA授权中心(专业权威的机构)认可了。原创 2023-05-18 14:45:31 · 538 阅读 · 0 评论 -
什么是加密(Encrypt)?什么是哈希(Hash)?
本文主要介绍 加密 和 哈希的概念,以及他们的不同之处。原创 2023-05-18 13:37:33 · 1111 阅读 · 0 评论 -
get 和 post 的区别
本文主要介绍了 get 和 post 的区别原创 2023-05-18 12:34:39 · 109 阅读 · 0 评论 -
JavaScript继承
原型链继承的一个是包含引用类型值的原型属性会被所有实例共享。换而言之,如果一个实例改变了该属性,那么其他实例的该属性也会被改变比如以下代码就会出问题:我明明只想修改了 child1 的arr,我不想修改 child2 的 arr。但是实际结果却是, child2 的 arr。上述问题能否避免呢?答案是可以的。我们可以通过来避免上述问题。原创 2023-05-15 14:51:18 · 597 阅读 · 1 评论 -
面试官:如何实现大文件上传
本文主要介绍了大文件上传的基本流程, File 对象、Blob 对象的的常用 api 等等原创 2023-05-14 00:04:59 · 1665 阅读 · 1 评论 -
var、let、const的区别【JavaScript基础面试题】
在 ES6 中,var、let、const 都可用于变量声明,它们之间有什么区别?在本博客中,详细讲解了 var、let 和 const 的范围、使用和提升。在本文中,我们将讨论 var、let 和 const 的范围、使用和提升。当你阅读时,请注意我将指出的它们之间的差异。原创 2023-05-09 14:01:53 · 295 阅读 · 0 评论 -
原型&原型链【JavaScript基础面试题】
用通俗易懂的例子讲解什么是原型链,什么是原型对象。原创 2023-05-07 14:47:30 · 485 阅读 · 0 评论 -
深拷贝与浅拷贝【JavaScript基础面试题】
本文介绍了常见的 深拷贝 与 浅拷贝 方法。以及如何手动实现 深拷贝。原创 2023-05-06 19:06:24 · 181 阅读 · 0 评论 -
箭头函数【JavaScript基础面试题】
本文详细介绍了 箭头函数 和 普通函数 的区别。通过具体的示例代码展现箭头函数的特殊之处。原创 2023-05-06 18:05:52 · 227 阅读 · 0 评论 -
闭包【JavaScript基础面试题】
本文介绍了闭包形成的原理,常见的闭包使用场景,以及闭包所带来的问题原创 2023-05-06 17:35:37 · 110 阅读 · 0 评论