![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
前端技术
zbsnzj
这个作者很懒,什么都没留下…
展开
-
JavaScript es6之前实现继承的方法
【代码】JavaScript es5的实现继承的方法。原创 2024-03-25 14:08:12 · 837 阅读 · 0 评论 -
JavaScript 如何设置私有属性
是一个真正的私有变量,因为它是在一个立即执行函数表达式(IFEe)的作用域内定义的,外部代码无法直接访问。我们通过返回的对象中的。:当类的内部实现发生变化时,只要保持接口不变,就不会影响到使用该类的其他代码。是一个私有属性,因为它是在函数作用域内定义的,外部无法直接访问。:私有属性可以隐藏类的内部实现细节,只暴露必要的接口给外部使用。:防止外部代码随意修改类的内部状态,可能导致错误或不一致的状态。原创 2024-03-24 13:38:01 · 227 阅读 · 0 评论 -
JavaScript 构造函数和普通函数的区别,new.target的作用
如果是,它执行构造函数的代码;如果不是,它抛出一个错误。通常用于创建和初始化对象,它们的名称通常以大写字母开头,并且当你使用。则没有这些限制,它们可以执行任何任务,并且可以被调用而无需使用。是一个特殊的属性,它允许你检测一个函数或构造函数是否通过。下面是一个简单的例子来说明。关键字调用它们时,它们会返回一个新对象。将返回指向该函数的引用;原创 2024-03-23 14:29:33 · 259 阅读 · 0 评论 -
JavaScript object.is()和严格相等、非严格相等的区别
比较两个值时,如果它们的类型不同,JavaScript会尝试将它们转换为一个共同的类型,然后再进行比较。这个过程称为类型转换或类型强制。不会进行类型转换,如果两个值的类型不同,它们就被认为是不相等的。这个方法用来判断两个值是否相同。在大多数情况下表现相同,但处理。原创 2024-03-22 14:28:43 · 436 阅读 · 0 评论 -
JavaScript 动态属性访问和静态属性访问
总结: 静态属性访问是在编译时就能确定的属性访问方式,使用点符号(.)或方括号([])来访问对象的属性;而动态属性访问是在运行时才能确定的属性访问方式,使用方括号([])来访问对象的属性,并将属性名存储在一个变量中。2.动态属性访问: 动态属性访问是指在运行时才能确定的属性访问方式。在JavaScript中,可以使用方括号([])来访问对象的属性,并将属性名存储在一个变量中。1. 静态属性访问: 静态属性访问是指在编译时就能确定的属性访问方式。原创 2024-03-21 13:49:11 · 806 阅读 · 0 评论 -
JavaScript 什么是动态执行,有哪些动态执行的方法
动态执行通常指的是在JavaScript中,代码在运行时才被确定或执行的过程。这意味着代码不是预先编写好的,而是在程序运行时根据某些条件或数据动态生成的。原创 2024-03-20 15:24:26 · 1054 阅读 · 0 评论 -
JavaScript 什么是纯函数,有哪些常见的纯函数
纯函数是指那些不依赖于外部状态,也不改变外部状态的函数。在JavaScript中,纯函数的返回值仅由其输入参数决定,而且执行纯函数不会产生副作用,比如修改全局变量或修改传入的参数。原创 2024-03-19 17:14:51 · 681 阅读 · 0 评论 -
js 常见基础问题 var、let、const的区别
varlet和const。原创 2024-03-16 17:37:25 · 606 阅读 · 0 评论 -
JavaScript 迭代器和生成器
迭代器是一种特定的设计模式,用于依次访问集合的元素而不必暴露其底层的表现形式。ECMAScript 6(ES6)引入了内建的迭代器,该标准定义了。简而言之,迭代器是关于如何遍历数据结构的规则,而生成器提供了一种有效而优雅的实现这些规则的方法。生成器无需一次返回所有结果,而是按需“生成”结果,这对于处理大数据集或无限数据流尤为有用。使用生成器可以非常方便地实现自定义迭代器。生成器是ES6中引入的一种特殊函数,它可以通过。关键字将函数的执行暂停,并在必要时通过生成器对象的。生成器也符合迭代器协议,因此任何被。原创 2024-03-15 20:56:16 · 354 阅读 · 0 评论 -
JavaScript 取整时用parseInt()和Math.floor()的区别
会根据数字的正负来决定是向上还是向下取整。总是返回整数部分,而。原创 2024-03-13 15:52:30 · 418 阅读 · 0 评论 -
js 什么是函数柯里化,如何实现函数柯里化
闭包是一个有权访问另一个函数作用域内变量的函数。当一个函数返回另一个函数,并且这个返回的函数引用了外部函数的变量,那么这些变量会一直存在,即使外部函数已经执行完毕。函数柯里化(Currying)是一种将使用多个参数的函数转换成一系列使用一个参数的函数的技术。函数会返回一个新的函数。的参数数量,说明已经传入了足够的参数,这时。这个属性表示函数期望接收的参数数量。数组的引用,并且能够继续接收新的参数。2.如果传入柯里化函数的参数数量(,传入累积的所有参数,并返回结果。所需的参数数量时,它会调用原始函数。原创 2024-03-12 15:31:24 · 633 阅读 · 0 评论 -
js bind、apply、call的用法和区别
【代码】js bind、apply、call的用法和区别。原创 2024-03-10 18:00:58 · 171 阅读 · 0 评论 -
js 清空数组的方法
虽然a数组确实变为了空数组,但这种方法只是修改了a的指向,把a指向一个新的空数组,然而[1,2,3,4,5]这个数组并没有被清除,依然保存在内存中。和方法1差不多,筛选出一个空数组然后赋值给原数组,但并没有清除原数组。可以真正做到将数组清除,且写法简洁。这种方法简单高效,最值得推荐。原创 2024-03-09 17:04:16 · 497 阅读 · 0 评论 -
js对象 静态方法和实例方法
第一个Person.say()是直接调用构造函数Person身上的静态方法say(),而且此时我们并没有调用过Person的构造函数,那么Person构造体内的代码也还是不存在的,第一个和第二个say()方法也都是不存在的,就只能调用第四个say()方法,该方法的输出为"d"使用Person构造函数创建了一个实例obj,调用obj.say()是调用实例方法say(),obj自身就有say()方法,所以不会到Person的原型上找say()方法,所以调用的是第二个say()方法,输出的是"b"原创 2024-03-09 16:31:53 · 453 阅读 · 0 评论 -
js里Object和Map的区别
一、键的类型Object的键必须是字符串或Symbol类型 Map的键可以是任何类型的值,包括函数、对象或其他Map实例二、键的唯一性在Object中,如果使用相同的键多次,后面的值会覆盖前面的值 在Map中,如果使用相同的键多次,后面的值不会覆盖前面的值,而是会形成一个值链三、迭代Object的迭代是依赖于键的插入顺序的,ES6之前没有标准的迭代方法 Map提供了迭代器,可以按照插入顺序迭代键四、性能对于小型数据集合,Object和Map性能差异不大 对于大型数据原创 2024-03-09 15:46:50 · 339 阅读 · 0 评论 -
使用Proxy实现函数链式调用
当我们链式调用add方法时会触发Proxy对象拦截器handler里的get方法,get方法里面回去触发全局对象global身上的对应方法,传入obj里的num属性对num进行处理,然后返回proxy对象,以此类推形成链式调用,最后当调用end方法时代表链式调用结束,返回num的值。我们在调用Numbers(3)应该返回一个Proxy对象,那么在Numbers内部需要创建一个Proxy对象并且返回这个Proxy对象。原创 2024-03-07 16:13:46 · 238 阅读 · 0 评论 -
js实现数组扁平化
对于数组里的元素,如果元素就是单独的一个数字或字符,那么直接push进新维护的flat数组中,如果元素为一个数组,对数组再次调用falttening函数实现递归,可以将嵌套的所有数组都转为一维数组。不仅可以通过扩展运算符的方式将两个数组拼接为一个数组,也可以使用Array自带的concat()函数。将得到的原始flat数组转为set集合可以实现去重,再利用拓展运算符将set集合转回为数组。数组扁平化就是将这种嵌套数组转为全一维数组形式。原创 2024-03-06 16:26:48 · 142 阅读 · 0 评论 -
isNaN和Number.isNaN()的区别
2、false,"0xd"是一个十六进制的表示,可以转为十进制的13,可以转换为数字则返回false。isNaN()会先尝试转换为数字,如果无法转换为数字则返回true,否则返回false。对于Number.isNaN()只有碰到NaN才会返回true,不会转换,严格判断。"123"虽然是字符串但可以转换为数字123,返回false。所有上面四个测试只有第一个返回true,其他都返回false。4、false,"0yd"不是NaN,返回false。5、false,"0xd"不是NaN,返回false。原创 2024-03-06 15:50:21 · 287 阅读 · 0 评论 -
为什么0.1+0.2不等于0.3
0.1的小数位是无穷的,只能截取52位,且53位为1,需要往前进一位,所以发生了第一次精度丢失。这个二进制值转为十进制就是0.30000000000000004。有53位且为1,需要截取一位并进位,发生了第二次精度丢失,原创 2024-02-23 19:54:35 · 383 阅读 · 0 评论 -
前端项目打包体积分析与优化
修改webpack.config.js文件里的external配置。原创 2024-02-23 19:10:34 · 826 阅读 · 0 评论 -
json-server的使用
jsonServer支持restful风格。项目引入json-server。调用接口成功返回数据。原创 2023-10-27 14:42:16 · 185 阅读 · 3 评论 -
闭包的底层原理以及实际应用
所以b函数能访问a函数内部的变量,并且b函数是被return出去的,并没有被执行然后销毁,所以可以在函数外部调用b函数访问a函数内部的变量。对于上面的代码,VO有(value,foo,bar),bar的AO有(value),foo的AO为空。变量对象时在执行上下文中被激活的,只有变量对象被激活了,在这段代码中才能使用所有的变量。b函数执行的时候先看到自己的AO,然后是a函数的AO,最后是外部的VO。手写js特性 手写bind。原创 2023-10-26 16:12:22 · 59 阅读 · 0 评论