1.proxy
Proxy 是 JavaScript 中的一个内置对象,它允许你在目标对象之前定义自定义的行为(例如拦截、修改或增强目标对象的操作)。通过使用 Proxy,你可以创建一个代理对象,该对象可以拦截并重定义对目标对象的操作。
Proxy 对象的基本语法如下:
javascript复制代码
const proxy = new Proxy(target, handler);
target
:要代理的目标对象。handler
:一个用于定义拦截行为的对象,包含了一些预定义的拦截器方法(也称为“陷阱”)。
拦截器方法(陷阱)是一组钩子函数,它们可以拦截目标对象上的操作,例如获取属性值、设置属性值、调用函数、构造函数等。当对目标对象进行操作时,如果存在相应的拦截器方法,代理对象将会触发这些方法,并允许你在执行操作之前、之后或中间进行自定义处理。
以下是一些常见的拦截器方法:
get(target, prop, receiver)
:拦截对目标对象属性的读取操作。set(target, prop, value, receiver)
:拦截对目标对象属性的设置操作。apply(target, context, args)
:拦截对目标函数的调用操作。construct(target, args, newTarget)
:拦截对目标函数的构造调用操作。- 等等。
通过使用 Proxy,你可以在不修改原始对象的情况下,对它的访问和操作进行控制和定制化。Proxy 在实现数据绑定、数据验证、权限控制等方面具有很大的灵活性和可扩展性
2.Promise
Promise是JavaScript的一种异步编程解决方案。它用于处理可能尚未完成的异步操作,并提供了一种更具可读性和可维护性的方式来处理异步代码。
Promise对象代表一个异步操作的最终结果,可以有三种状态:进行中(pending)、已成功(fulfilled)和已失败(rejected)。当一个操作是异步的时候,可以使用Promise包装它,然后通过链式调用方法来处理操作完成或失败的情况。
Promise对象有两个主要方法:
- then()方法:用于指定当Promise对象状态变为fulfilled时的处理函数。它接收一个成功回调函数作为参数,该函数在Promise对象成功完成后被调用,并且可以接收到成功的结果值。
- catch()方法:用于指定当Promise对象状态变为rejected时的处理函数。它接收一个失败回调函数作为参数,该函数在Promise对象失败后被调用,并且可以接收到失败的原因。
除了then()和catch()方法外,Promise还提供了其他的方法,如:
- finally()方法:无论Promise对象的状态如何,都会执行的回调函数。
- all()方法:接收一个Promise数组作为参数,当所有的Promise对象都成功完成时,返回一个新的Promise对象,该新Promise对象的状态为fulfilled,并携带着所有Promise对象的结果值。
- race()方法:接收一个Promise数组作为参数,当其中任意一个Promise对象成功完成时,返回一个新的Promise对象,该新Promise对象的状态为fulfilled,并携带着第一个成功完成的Promise对象的结果值。
使用Promise可以更好地管理和组织异步操作,避免了回调地狱,使代码更加清晰和易于维护。