
javascript
文章平均质量分 80
喵_美
这个作者很懒,什么都没留下…
展开
-
Promise 对象
Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。它由社区最早提出和实现,ES6 将其写进了语言标准,统一了用法,原生提供了Promise对象。所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。从语法上说,Promise 是一个对象,从它可以获取异步操作的消息。Promise 提供统一的 API,各种异步操作都可以用同样的方法进行处理。Promise对象有以下两个特点。(1)对象的状态不受外界影响。原创 2024-07-16 15:59:34 · 1059 阅读 · 0 评论 -
Symbol
ES5 的对象属性名都是字符串,这容易造成属性名的冲突。比如,你使用了一个他人提供的对象,但又想为这个对象添加新的方法(mixin 模式),新方法的名字就有可能与现有方法产生冲突。如果有一种机制,保证每个属性的名字都是独一无二的就好了,这样就从根本上防止属性名的冲突。这就是 ES6 引入Symbol的原因。ES6 引入了一种新的原始数据类型Symbol,表示独一无二的值。undefinednull、布尔值(Boolean)、字符串(String)、数值(Number)、对象(Object)。原创 2024-07-16 12:52:09 · 687 阅读 · 0 评论 -
Proxy代理
Proxy 用于修改某些操作的默认行为,等同于在语言层面做出修改,所以属于一种“元编程”(meta programming),即对编程语言进行编程。Proxy 可以理解成,在目标对象之前架设一层“拦截”,外界对该对象的访问,都必须先通过这层拦截,因此提供了一种机制,可以对外界的访问进行过滤和改写。Proxy 这个词的原意是代理,用在这里表示由它来“代理”某些操作,可以译为“代理器”。原创 2024-07-16 12:05:08 · 1027 阅读 · 0 评论 -
JS之防抖和节流
在页面的无限加载场景下,需要用户在滚动页面时,每隔一段时间发一次 ajax 请求,而不是在用户停下滚动页面操作时才去请求数据;所谓防抖,就是指触发事件后在 n 秒内函数只能执行一次,如果在 n 秒内又触发了事件,则会重新计算函数执行时间。在后期有拓展了前缘防抖函数,即执行动作在前,设定延迟周期在后,周期内有事件被触发,不执行动作,且周期重新设定。当事件被触发时,设定一个周期延时执行动作,若周期又被触发,则重新设定周期,直到周期结束,执行动作。固定周期内,只执行一次动作,若没有新事件触发,不执行。原创 2024-07-09 12:16:47 · 1089 阅读 · 0 评论 -
js碰撞检测
碰撞检测碰撞检测(边界检测)在前端游戏,以及涉及拖拽交互的场景应用十分广泛。碰撞,顾名思义,就是两个物体碰撞在了一起,眼睛是可以直观的观察到碰撞的发生。但对于前端实现,如何让 JavaScript 代码理解两个独立的“物体”(DOM)碰撞在一起呢。这就涉及到碰撞检测(或者叫边界检测)的问题了。两个矩形块的碰撞:判断任意两个(水平)矩形的任意一边是否有间距,从而得之两个矩形块有没有发生碰撞。具体实现方式,可以选定一个矩形为参照物,计算另一矩形的与自己相近的边是否发生重合现象。若四边均未发生重合,则原创 2024-07-09 11:56:29 · 762 阅读 · 0 评论 -
js中offset、scroll、client、getBoundingClientRect、event坐标位置及视窗系列
返回整个页面的滚动的位置,获取滚动的高度pageYOffset/pageXOffset 与 scrollY/scrollX 返回的值一致,前者是后者的别名,建议使用前者,不支持 IE8。同样可以使用 offsetWidth/offsetHeight 来获取元素包括滚动条和边框的尺寸,这个方法返回元素本身的宽高 + padding + border + 滚动条。返回的是计算后的 CSS 样式的 border-left-width/border-top-width 的值,就是边框的宽度。原创 2024-07-09 11:34:59 · 1141 阅读 · 0 评论 -
common通过js方法
common通用js方法。原创 2024-07-08 15:53:39 · 236 阅读 · 0 评论 -
冒泡排序、插入排序、选择排序
插入排序的代码实现虽然没有冒泡排序和选择排序那么简单粗暴,但它的原理应该是最容易理解的了,因为只要打过扑克牌的人都应该能够秒懂。插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。冒泡排序是一种比较简单的排序算法,这种算法是让越小或者越大的元素经由交换慢慢“浮”到数列的顶端,就像水里面的泡泡向上浮动一样,所以叫“冒泡排序”。选择排序是一种简单直观的排序算法,无论什么数据进去都是 O(n²) 的时间复杂度。1. 比较相邻的元素。原创 2024-07-08 14:04:40 · 290 阅读 · 0 评论 -
TypeScript
TypeScript特点类型注解let var1: string; // 类型注解var1 = "哈哈"; // 正确var1 = 4; // 错误// 编译器类型推断可省略这个语法let var2 = true;注:常见原始类型: string,number,boolean,undefined,null,symbol类型基础// 类型数组let arr: string[];arr = ['Tom']; // 或Array<string>// 任意类型any原创 2021-03-25 14:17:38 · 285 阅读 · 0 评论 -
js实现表格导出功能
js实现表格导出功能<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title></head><body>原创 2020-10-29 17:29:55 · 520 阅读 · 0 评论 -
前端代码异常监控—window.onerror
我是开发微信图文页一名普通的码农。近期加班加点上线非常重要的的广告功能:底部的广告区域有关注公众号的按钮,用户点击之后就会给广告主带来粉丝,给文章所有者带来广告收入。某天,码农心血来潮,想了解一下每篇文章的图片都来自什么域名,于是加了一段统计脚本…如此简单的for循环能难得了我,测试啥,直接上线!投诉来了下午15:00上完线,下班后突然收到一堆同事电话:我们这边发现广告的关注点不动了,用户好多投诉进来了,看到你15:00上了线,快看看有什么问题!在家VPN简单看了看代码,知道真相后简直无法直视:转载 2020-09-29 17:12:31 · 6521 阅读 · 0 评论 -
计算某段js代码执行的时间
consolo.time(’’)设置一个秒表:必须命名可设置多个秒表consolo.time('a')//要计算的执行时间代码写到中间consolo.timeEnd('a') //例子 console.time('abc'); for (var i = 0; i < 100000000; i++) {}; console.timeEnd('abc');...原创 2019-06-12 20:35:57 · 3903 阅读 · 2 评论 -
JS获取日历每个月有多少天
new Date(year, month, 0).getDate()使用 new Date() 创建时间对象时,如果 date 传入 0,就能直接通过 getDate() 获取到最后一天的日期原创 2020-02-24 23:51:18 · 853 阅读 · 0 评论 -
获取异步操作的结果:回调函数
如果需要获取一个函数中异步操作的结果,则必须通过回调函数来获取function fn(callback) { setTimeout(function () { var data = 'hello' callback(data) }, 1000)}// 如果需要获取一个函数中异步操作的结果,则必须通过回调函数来获取fn(function (data) { con...原创 2019-09-29 16:09:24 · 541 阅读 · 0 评论