
JS基础
再刷一边JS,打实根基
cv全粘工程师
全粘
展开
-
【移动端vant 地址选择滑动不了】
因为vant中的弹窗组件都会有个默认参数,打开弹窗时禁止页面滚动,这个可以解决滚动穿透的问题,但是像我们这种弹窗中有地址选择的就会出现地址无法选择的bug。H5页面直接在浏览器打开是没有任何问题的,但是内嵌到小程序中就会出现,目前已出现在抖音,快手,小程序中,其他的没有试。这个bug出现得同时具备几大要素:1.内嵌H5,2,地址选择之前有使用过弹窗,设置lock-scroll为false。设置lockScroll为false。1.Overlay 遮罩层。2.Dialog 弹出框。原创 2023-12-07 16:00:43 · 1033 阅读 · 0 评论 -
【什么是闭包? 闭包产生的原因? 闭包有哪些表现形式?】
闭包是指一个函数可以访问并操作在其作用域之外的变量的能力。在 JavaScript 中,每当函数被创建时,就会创建一个闭包。// 输出 8在这个例子中,add函数返回一个新的函数,新函数可以访问add函数的参数x。addThree是一个闭包,它存储了add(3)返回的函数以及x的值,因此调用就会返回3 + 5 = 8。闭包在许多 JavaScript 库和框架中都得到了广泛的应用,它们可以用来实现许多高级功能,例如封装私有变量、延迟计算、事件监听和函数柯里化等。原创 2023-10-05 19:28:41 · 856 阅读 · 2 评论 -
【手写 Promise 】
接下来,我们需要定义一个 Promise 构造函数,它需要一个执行器函数作为参数。执行器函数接受两个参数 resolve 和 reject,它们是两个函数,用于修改 Promise 的状态。在构造函数中,我们定义了 Promise 的状态和值。onResolvedCallbacks 和 onRejectedCallbacks 数组用于存储 then 方法中传入的回调函数,当 Promise 的状态改变时,我们需要依次执行这些回调函数。原创 2023-10-04 20:10:50 · 150 阅读 · 0 评论 -
【JS 一个数组随机选取x个元素】
【代码】【JS 一个数组随机选取x个元素】原创 2023-08-10 14:31:34 · 339 阅读 · 0 评论 -
【JS 回收机制】
比如,它无法回收循环引用的对象,如果两个对象相互引用,而且没有其他变量引用它们,那么它们将一直存留在内存中。此外,垃圾回收器也有一定的性能成本,可能会对程序的性能产生影响,因此在编写代码时,应该尽量减少对象的创建和销毁,以便提高程序的效率。JavaScript 使用的是基于标记的垃圾回收机制,也就是说,当一个对象不再被使用时,引擎会将其标记为未使用。(Mark and Sweep):这是最常见的垃圾回收算法,它遍历内存中的所有对象,并标记被引用的对象,然后清除未被标记的对象。避免内存泄漏,如循环引用等。原创 2023-07-28 16:19:42 · 446 阅读 · 0 评论 -
【JS 代理Proxy】
JavaScript 代理是一种强大的功能,它允许你拦截对象上的操作,并在它们被执行之前或之后执行自定义代码。这使得开发人员能够创建功能强大的、动态的对象,以及更高级别的代码抽象。JavaScript 代理的主要用途是创建可观察对象、虚拟对象和代理实现。它们允许你将逻辑封装在代理中,并在对象上执行操作时访问对象的属性和方法。代理还可以用于数据验证、缓存和数据重载等功能。原创 2023-07-28 09:39:11 · 386 阅读 · 0 评论 -
【JS 宏任务与微任务】
具体来说,当一个宏任务执行时,其内部产生的微任务会被放入微任务队列中,而当宏任务执行完成后,才会执行微任务队列中的所有微任务,直到队列为空后,才会开始执行下一个宏任务。当一个宏任务执行完成后,会先执行所有的微任务,再执行下一个宏任务。调用栈为空时,才会执行宏任务队列中的任务,即每个宏任务只会执行一次。总结一下,我们可以通过控制微任务队列和宏任务队列的改变来优化程序的执行顺序,提高程序的性能。在JavaScript中,任务可以分为两种类型,即宏任务和微任务。原创 2023-07-28 09:09:40 · 299 阅读 · 0 评论 -
【JS 堆栈】
JavaScript 中的对象数据类型(如数组、函数、对象等)都是存储在堆中的。栈中的数据存储方式是连续的,栈的大小在程序运行时是固定的,不可动态分配。当脚本在运行时,每当函数被调用时,它会被添加到堆栈的顶部。当函数完成执行并返回结果时,该函数将从堆栈中弹出,并且控制权将返回到调用该函数的地方。在异步编程中,回调函数将被添加到回调堆栈中,以便在未来的某个时间执行。如果函数中再次调用其他函数,则该函数也会被添加到调用栈中。当函数完成执行并返回结果时,该函数将从调用栈中弹出,并将控制权返回到其调用者。原创 2023-07-27 16:51:17 · 140 阅读 · 0 评论 -
【JS async 详解】
在上面的代码中,getUserData函数使用async关键字标记为异步函数,并在内部使用await关键字等待fetch操作完成。fetch返回Promise对象,并使用await等待Promise对象的结果,然后解析响应的JSON内容。async函数是一个返回Promise对象的函数,可以通过await等待异步操作的结果。由于async/await使用Promise来管理异步操作,因此我们必须使用try/catch块来捕获Promise的拒绝(rejected)状态。原创 2023-07-26 18:29:31 · 391 阅读 · 0 评论 -
【JS 同步调用多个函数 Promise.all】
当数组中所有的 Promise 对象都成功(即状态为 resolved)时,返回的 Promise 对象状态为 resolved,并将所有 Promise 对象的结果组成的数组作为参数传递给回调函数;如果其中任意一个 Promise 对象失败(即状态为 rejected),返回的 Promise 对象状态为 rejected,并将第一个失败的 Promise 对象的错误信息作为参数传递给回调函数。在上述示例代码中,我们创建了三个 Promise 对象,分别代表三个异步操作。原创 2023-07-26 11:37:26 · 1163 阅读 · 0 评论 -
【JS Promise 及手写J简单Promise】
JavaScript Promise 是一种异步编程解决方案,它是一种对象,用于表示一个异步操作的最终完成或失败及其结果值。Promise 对象有三种状态:pending(等待态)、fulfilled(成功态)、rejected(失败态)。在 Promise 构造函数中,需要传入一个执行器函数(executor function),该函数含有 resolve 和 reject 两个参数。如果异步操作成功,则调用 resolve 函数,将结果作为参数传递给 then 方法中的成功态回调。原创 2023-07-26 11:28:33 · 230 阅读 · 0 评论 -
【JavaScript Static 方法】
总结一下,Static方法允许开发者在不创建实例的情况下访问类级别的操作,这在某些情况下非常有用。但请注意,在Static方法中无法访问实例变量和实例方法,因此应该选择正确的方法类型来实现所需的行为。JavaScript中的Static方法是一种特殊类型的方法,它们属于类本身而不是类的实例。Static方法中无法访问实例变量和实例方法,因为它们是定义在类实例上的。Static方法中的this关键字指向类本身,而不是类的实例。Static方法可以通过类本身来调用,而不需要创建类的实例。原创 2023-07-25 17:47:56 · 396 阅读 · 0 评论 -
【js Call、apply与bind 区别】
综上所述,Call 和 apply 用来改变函数的 this 指向并立即执行,而 bind 则是用来绑定函数与 this 的关系,返回一个新的函数。他们的第一个参数就是改变this指向的关键,如上,传入其他对象或函数,this指向就发生了改变,如果传入null 就默认指定window对象。Bind 方法也能改变函数的 this 指向,但它不会立即执行函数,而是返回一个新函数,需要调用才会执行。需要注意的是,bind 方法返回的是一个新函数,如果原函数有返回值,那么绑定后的函数也会返回相同的值。原创 2023-07-25 15:17:14 · 137 阅读 · 0 评论 -
【JavaScript中的Map】
例如,当需要存储动态的键值对集合时,Map是一个非常有用的工具。例如,可以使用Map来存储用户输入的数据,或者在需要在多个函数之间传递数据时使用Map。此外,Map可以用于在各种类型之间建立映射关系,例如在模板引擎中使用Map来存储变量和值之间的映射。JavaScript中的Map是一种数据结构,用于存储键值对。Map中的键和值可以是任何类型的数据,包括原始值和对象引用。Map提供了一些有用的方法,例如set()用于添加键值对,get()用于检索值,has()用于检查是否存在给定键等。原创 2023-07-25 14:25:55 · 501 阅读 · 0 评论 -
【js Set()】
Set() 是 JavaScript 中的数据结构之一,它类似于数组,但是每个值都是唯一的(没有重复的值)。add(value):向 Set 对象中添加一个新的元素。如果元素已经存在,则不会重复添加。Set() 对象是一种非常有用的数据结构,可以用于存储唯一值,去重,过滤重复数据等操作。delete(value):从 Set 对象中删除一个元素。has(value):判断 Set 对象中是否存在某个元素。clear():清空 Set 对象中的所有元素。size:获取 Set 对象中元素的数量。原创 2023-07-25 14:18:42 · 382 阅读 · 0 评论 -
【JS Object.defineProperty()】
函数允许您定义或修改对象的属性。它接收三个参数:要操作的对象,要操作的属性名称,以及一个包含属性描述符的对象。的值,但由于该属性是只读的,我们的修改会被忽略,仍然打印原始值。,这意味着我们不能更改属性的值。在此示例中,我们创建一个空对象。函数为该对象创建了一个名为。语句中,我们尝试访问。语句中,我们尝试更改。原创 2023-07-22 11:18:22 · 132 阅读 · 0 评论 -
【JS 访问器】
访问器是用于访问对象属性的方法,它包含 getter 和 setter 方法。getter 方法用于获取属性的值,setter 方法用于设置属性的值。使用访问器可以保护对象属性的访问,实现属性的读取和写入控制,以及在获取和设置属性值时进行自定义处理。访问器属性的优点在于可以将对象属性的读取和写入操作抽象成方法,并且可以在读取和写入时进行自定义处理,例如验证、转换和计算等。定义访问器方法,它们分别用于定义属性的 getter 和 setter 方法。属性时,会调用 setter 方法,并输出。原创 2023-07-22 11:14:25 · 181 阅读 · 0 评论 -
【JS 构造器】
构造器的名称通常以大写字母开头以便区别于普通函数。关键字来引用它正在创建的对象,然后通过给。添加属性和方法来定义对象的属性和行为。在上面的例子中,我们创建了一个名为。来将每个对象的信息输出到控制台上。的构造器,该构造器接受。关键字来实例化两个对象。原创 2023-07-22 11:09:10 · 392 阅读 · 0 评论 -
【JS 对象】
JavaScript 对象是一种用于存储和处理相关数据和功能的数据结构。对象可以包含属性和方法,属性是键值对的形式,每个属性都有一个名称(键)和一个值。对象也可以作为函数的参数和返回值,这使得在 JavaScript 中可以更轻松地操作和传递数据。常用的对象是通过花括号 {} 来创建的,并可以使用点操作符或括号操作符来访问属性和方法。在 JavaScript 中,几乎“所有事物”都是对象。所有 JavaScript 值,除了原始值,都是对象。字符串是对象(如果用 new 关键词定义)原创 2023-07-22 11:07:52 · 65 阅读 · 0 评论 -
【js 类】
这里,我们使用 prototype 对象为 Person 类定义了一个名为 sayHello 的方法。在类的定义中,我们使用 constructor 函数来定义类的属性和方法。方法可以直接在类的定义中定义,也可以使用 prototype 对象来定义。总的来说,JavaScript 中的类是使用 constructor 函数和 prototype 对象来实现的,它们是一种基于原型继承的方式。使用 constructor 函数可以创建类的实例,并且可以在该函数内部定义类的属性和方法。原创 2023-07-22 10:13:00 · 88 阅读 · 0 评论 -
【CDN原理】
CDN(Content Delivery Network)是一种基于分布式计算和网络技术的内容分发系统,它通过在不同位置部署多个节点服务器,将内容存储在离用户最近的节点上,以提高用户访问该内容的速度和可靠性。通过CDN,用户可以更快地获取所需的内容,减少网络拥塞和延迟,提升用户体验。如果该资源没有被缓存,则节点服务器会从源服务器上获取该资源,并将其缓存起来,同时把该资源返回给请求的用户。CDN中心会根据节点服务器的负载情况等因素,对多个节点进行负载均衡,以保证系统的高效稳定运行。原创 2023-07-22 10:12:31 · 62 阅读 · 0 评论 -
【Js 前端面向对象编程具体该怎么做】
以上是 JavaScript 中实现面向对象编程的一些基本方法,当然还有很多其他的方法,但这些已经足够你入门了。原创 2023-07-22 10:11:42 · 125 阅读 · 0 评论 -
【JS 原型链】
例如,如果我们在 p 对象上访问 p.toString() 方法,由于 p 对象本身没有该方法,JavaScript 将会在原型链上查找该方法,找到 Person.prototype 上的 toString() 方法并执行。如果我们访问 obj.toString() 方法,由于 obj 对象本身没有该方法,JavaScript 将会在原型链上查找该方法,找到 Object.prototype 上的 toString() 方法并执行。通过构造函数和原型对象,我们可以轻松地创建对象的实例,并实现对象的继承。原创 2023-07-21 16:21:36 · 90 阅读 · 0 评论 -
【js 类中的constructor】
在构造函数中,会将传入的参数赋值给类的实例变量。constructor是JavaScript中的一个特殊方法,它是在创建一个新的对象实例时自动调用的。constructor方法会在一个类被实例化时执行,用于初始化该实例的属性值。在这个例子中,constructor方法用于初始化Person类的两个属性:name和age。在上面的代码中,person1和person2都是Person类的实例,它们的name和age属性会根据传递给构造函数的值进行初始化。原创 2023-07-21 09:17:07 · 1221 阅读 · 0 评论 -
【JS中super详解】
在JavaScript中,super可以在类中使用,通过使用super可以访问父类中的属性和方法,也可以在子类的构造函数中调用父类的构造函数。在子类的构造函数中,通过super(name)调用了父类的构造函数,并传入了name参数。super关键字在JavaScript中的主要作用是用来访问父类的属性和方法,以及调用父类的构造函数。在子类中可以使用super来继承父类的属性和方法,并且可以通过super来调用父类的构造函数来实现初始化子类的过程。在子类的构造函数中,可以使用super来调用父类的构造函数。原创 2023-07-20 18:31:54 · 2320 阅读 · 1 评论 -
【JS自定义迭代器】
然后,我们使用该自定义迭代器来遍历一个数组,并在每次迭代时输出当前元素的值。在 JavaScript 中,可以通过定义一个符合迭代器协议的对象来创建自定义迭代器。在上面的示例中,我们首先定义了一个。迭代器协议要求对象必须实现一个。表示是否还有更多元素需要迭代。需要注意的是,当自定义迭代器的。时,迭代器将停止迭代。原创 2023-07-20 18:16:01 · 245 阅读 · 0 评论 -
【JS 数据类型】
JavaScript (简称 JS) 是一种动态类型语言,即变量的数据类型可以在运行时自动推断出来,或者在赋值时明确指定。其中,字符串、数字、布尔值、null 和 undefined 为基本类型,其他的都是对象类型。可以使用 typeof 运算符来检测变量的数据类型,它返回的是一个字符串。需要注意的是,typeof null 会返回 “object”,这是 JavaScript 的一个历史遗留问题。基本类型:包括字符串、数字、布尔值、null 和 undefined。对象类型:包括对象、数组和函数。原创 2023-07-18 17:47:56 · 64 阅读 · 0 评论