赞
踩
相信看了本文后,对你的面试是有一定帮助的!关注专栏后就能收到持续更新!
⭐点赞⭐收藏⭐不迷路!⭐
这三个函数都是 JavaScript 中用于调用函数的方法,它们的作用如下:
call
: 调用一个函数,其参数是一个对象和一系列参数列表。apply
: 与 call
类似,但参数列表是一个数组。bind
: 创建一个新的函数,其中指定的对象将是该函数的上下文,可以预先设置一些参数。以下是这三个方法的简单实现:
// call 实现 Function.prototype.myCall = function(context, ...args) { context = context || window; const fn = Symbol(); context[fn] = this; const result = context[fn](...args); delete context[fn]; return result; } // apply 实现 Function.prototype.myApply = function(context, argsArray) { context = context || window; const fn = Symbol(); context[fn] = this; const result = context[fn](...argsArray); delete context[fn]; return result; } // bind 实现 Function.prototype.myBind = function(context, ...args) { const self = this; return function(...innerArgs) { return self.apply(context, args.concat(innerArgs)); } }
new
关键字用于创建一个用户定义的对象类型的实例或具有构造函数的内置对象的实例。下面是一个简单的 new
的实现:
function myNew(constructor, ...args) {
const obj = Object.create(constructor.prototype);
const result = constructor.apply(obj, args);
return result instanceof Object ? result : obj;
}
在 JavaScript 中,异步编程是通过回调函数、Promise 和 async/await 来实现的。下面是这些异步编程方法的简要说明:
这些是 JavaScript 中常用的异步编程方法,可以根据具体的需求选择最适合的方法。
浏览器的垃圾回收机制是为了管理内存的分配和释放,防止内存泄漏和提高内存利用率而设计的。主要有以下几种方式:
EventEmitter 是 Node.js 中核心模块之一,用于处理事件的订阅与发布。以下是一个简单的 EventEmitter 类的实现:
class EventEmitter { constructor() { this.events = {}; } on(event, listener) { if (!this.events[event]) { this.events[event] = []; } this.events[event].push(listener); } emit(event, ...args) { const listeners = this.events[event]; if (listeners) { listeners.forEach(listener => listener(...args)); } } off(event, listener) { const listeners = this.events[event]; if (listeners) { this.events[event] = listeners.filter(fn => fn !== listener); } } } // 示例用法 const emitter = new EventEmitter(); const callback1 = () => console.log('Callback 1 invoked'); const callback2 = () => console.log('Callback 2 invoked'); emitter.on('event', callback1); emitter.on('event', callback2); emitter.emit('event'); // 输出:Callback 1 invoked 和 Callback 2 invoked emitter.off('event', callback1); emitter.emit('event'); // 只输出:Callback 2 invoked
在Web开发中,cookie 是一种存储在客户端的小型文本文件,用于跟踪用户和存储用户相关的信息。它通常由服务器发送给客户端,并且客户端会在后续的请求中将 cookie 信息发送回服务器。
要在 JavaScript 中操作 cookie,可以使用 document.cookie
属性。以下是一些常见的操作:
document.cookie = "name=value; expires=date; path=path; domain=domain; secure";
const cookieValue = document.cookie;
需要注意的是,cookie 存在一些限制,例如每个域名下的 cookie 数量和大小都是有限制的,通常每个域名下的 cookie 总大小不能超过 4KB,单个 cookie 大小不能超过 4KB。因此,在使用 cookie 时需要注意遵守这些限制。
localStorage
和 sessionStorage
都是 HTML5 提供的客户端存储数据的方式,它们可以在客户端保存持久化数据,以便在会话间或页面刷新后仍然可用。它们之间的主要区别在于数据的生命周期和作用域:
localStorage
:存储在 localStorage
中的数据没有过期时间,除非被清除,否则会一直保存在客户端。它的作用域是整个源(origin),即协议、主机名和端口号都相同的页面可以共享同一个 localStorage
。sessionStorage
:存储在 sessionStorage
中的数据只在当前会话期间有效,关闭浏览器标签页或窗口后数据将被清除。与 localStorage
不同,sessionStorage
的作用域限于当前会话,即同一个页面打开的不同标签页之间不共享数据。HTTP 状态码是服务器对客户端请求的响应的一种方式,用于传达请求的处理结果。常见的 HTTP 状态码包括:
常见的状态码包括 200(OK)、301(永久重定向)、404(未找到)、500(服务器内部错误)等。
HTTP 缓存是指在客户端或服务器上存储先前获取的资源副本,并在后续请求时重用这些资源副本,以减少网络流量和加快页面加载速度。主要的 HTTP 缓存策略包括:
强制缓存是一种 HTTP 缓存策略,其主要目的是在客户端缓存有效期内,客户端不会向服务器发送请求,而是直接使用缓存的资源。常用的强制缓存策略包括:
Cache-Control: max-age=3600
表示资源将在 3600 秒后过期,客户端在此期间直接使用缓存。强制缓存可以通过这些方式来实现,在有效期内客户端不会向服务器发送请求,从而加快了页面加载速度并减少了网络流量。
开源项目地址:https://gitee.com/falle22222n-leaves/vue_-book-manage-system
Github & Gitee 前后端总计已经 1000+ Star,1.5W+ 访问!
⭐点赞⭐收藏⭐不迷路!⭐
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。