JavaScript常用库

文章目录

  • [1.11.1 jQuery](#1.11.1 jQuery)
  • [1.11.2 setTimeout与setInterval](#1.11.2 setTimeout与setInterval)
  • [1.11.3 requestAnimationFrame](#1.11.3 requestAnimationFrame)
  • [1.11.4 Map与Set](#1.11.4 Map与Set)
  • [1.11.5 localStorage](#1.11.5 localStorage)
  • [1.11.6 JSON](#1.11.6 JSON)
  • [1.11.7 日期](#1.11.7 日期)
  • [1.11.8 WebSocket](#1.11.8 WebSocket)
  • [1.11.9 window](#1.11.9 window)
  • [1.11.10 canvas](#1.11.10 canvas)

1.11.1 jQuery

选择器
${selector},例如:
其中的selector和CSS中的选择器相同

可以通过选择器取绑定html中的标签。

javascript 复制代码
//会选择所有满足的选择器
${'div'}
${'.big-div'}
${'div>p'}

事件的绑定和解绑
$(selector).on(event, func)绑定事件,例如:

javascript 复制代码
$div.on('click', function(){
	console.log("click div");
});

${selcetor}.off(event, func)删除事件,例如:

javascript 复制代码
$div.on('click', function(){
	console.log("click div");
	$div.off('click');
});

当存在多个相同类型的事件出发函数时,可以通过click.name来区分,例如:

javascript 复制代码
// 
$('div').on('click.first', function (e) {
    console.log("click div");

    $('div').off('click.first');
});

在事件触发的函数中的return false等价于同时执行:

e.stopPropagation():阻止事件向上传递
e.preventDefault():阻止事件的默认行为

1.11.2 setTimeout与setInterval

setInterval(func, delay)

每隔delay毫秒,执行一次函数func()。

第一次在第delay毫秒后执行。例如:

javascript 复制代码
let $div = $('div');

    $div.click(() => {
        setTimeout(() => {
            console.log("hahhaha");
        }, 2000);
    })

setInterval(func, delay)

每隔delay毫秒,执行一次函数func()。

第一次在第delay毫秒后执行。

clearInterval()

关闭周期执行的函数,例如:

javascript 复制代码
let interval_id = setInterval(() => {
    console.log("Hello World!")
}, 2000);  // 每隔2秒,输出一次"Hello World"

clearInterval(interval_id);  // 清除周期执行的函数

1.11.3 requestAnimationFrame

该函数会在下次浏览器刷新页面之前执行一次,通常会用递归写法使其每秒执行60次func函数。调用时会传入一个参数,表示函数执行的时间戳,单位为毫秒。例如:

javascript 复制代码
function main() {
    let $div = $('div');

    let $run = $('#btn_begin');
    let $stop = $('#btn_end');

    let func_id;

    let last_timestep = 0;

    function step(timestamp) {
        // timesstamp:表示距离上次页面刷新已经过去了多久
        $div.width($div.width() + 1);
        $div.height($div.height() - 0.5);

        console.log(timestamp - last_timestep); // 求每两次刷新之间的时间间隔
        last_timestep = timestamp;

        func_id = requestAnimationFrame(step);
        // 下一次刷新的时候执行requestAnimationFrame去调用step函数,
        // 每次返回一个新的func_id
    };

    $run.click(() => {
        console.log('click_run');
        if (func_id) return false;

        func_id = requestAnimationFrame(step); // 执行刷新函数
    });

    $stop.click(() => {
        console.log("click_stop");

        cancelAnimationFrame(func_id);
        func_id = undefined; // 方便停止后,下次run.click可以执行
    });

}

export {
    main,
}

与setTimeout和setInterval的区别:

  • requestAnimationFrame渲染动画的效果更好,性能更加。
    该函数可以保证每两次调用之间的时间间隔相同,但setTimeout与setInterval不能保证这点。setTmeout两次调用之间的间隔包含回调函数的执行时间;setInterval只能保证按固定时间间隔将回调函数压入栈 中,但具体的执行时间间隔仍然受回调函数的执行时间影响。
  • 当页面在后台时,因为页面不再渲染,因此requestAnimationFrame不再执行。但setTimeout与setInterval函数会继续执行。

1.11.4 Map与Set

现查现用。

1.11.5 localStorage

可以在用户浏览器上存储键值对。

常用API:

  • setItem(key, value):插入
  • getItem(key):查找
  • removeItem(key):删除
  • clear():清空

1.11.6 JSON

JSON对象用于序列化对象、数组、数值、字符串、布尔值和null。

常用API:

  • JSON.parse():将字符串解析成对象
  • JSON.stringify():将对象转化为字符串

1.11.7 日期

返回值为整数的API,数值为1970-1-1 00:00:00 UTC(世界标准时间)到某个时刻所经过的毫秒数:

  • Date.now():返回现在时刻。
  • Date.parse("2022-04-15T15:30:00.000+08:00"):返回北京时间2022年4月15日 15:30:00的时刻。
    例如:
javascript 复制代码
console.log(Date.now());
    // 返回现在到1970-1-1 00:00:00 UTC的毫秒数
    console.log(Date.parse("2024-10-29T16:35:00.000+08:00"));
    // 返回"2024-10-29T16:35:00.000+08:00"到1970-1-1 00:00:00 UTC的毫秒数

1.11.8 WebSocket

与服务器建立全双工连接。

常用API:

  • new WebSocket('ws://localhost:8080'):建立ws连接。
  • send():向服务器端发送一个字符串。一般用JSON将传入的对象序列化为字符串。
  • onopen:类似于onclick,当连接建立时触发。
  • onmessage:当从服务器端接收到消息时触发。
  • close():关闭连接。
  • onclose:当连接关闭后触发。

1.11.9 window

1.11.10 canvas

现用现查

相关推荐
szp20056 小时前
Cache API 会丢掉 URL 里的 #:我的 9 个模型分块一直写在同一条缓存上
javascript·浏览器
keyipatience6 小时前
TypeScript学习(1)
前端·javascript·学习·typescript·html·css3
xifangge20257 小时前
基于 JavaScript 实现 CNC 数控切削参数与螺纹公差纯前端核算引擎
开发语言·前端·javascript
honkun67 小时前
vue 表格组件 vxe-table 修改滚动条样式,修改滚动条样式,统一宽度、颜色与自动隐藏
前端·javascript·vue.js
FRing038 小时前
JavaScript入门到精通二十四(正则表达式、元字符、修饰符)
开发语言·前端·javascript·正则表达式
大明二代9 小时前
从 RAG 到有记忆的 Agent:Mastra Memory 与 PostgreSQL 实战
前端·javascript·人工智能
小羊没烦恼!9 小时前
C#综合揭秘——Entity Framework 并发处理详解
java·开发语言·前端·javascript·数据库·mysql·c#
OpsEye10 小时前
模型能力波动怎么办?网关侧做模型质量监控与自动切换
javascript·ai编程
西红柿炖牛腩35412 小时前
机房电脑不能联网,怎么离线把课件里的 3D 模型压小?Draco / Meshopt 参数清单
前端·javascript·3d·性能优化·大屏端
爱喝水的小周12 小时前
实验十三 Vue 过渡与动画—电商后台消息中心实现
前端·javascript·vue.js