文章目录
- [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
现用现查