0.1.0 • Published 6 months ago

@kuankuan/deep-proxy v0.1.0

Weekly downloads
-
License
MulanPSL-2.0
Repository
-
Last release
6 months ago

@kuankuan/deep-proxy

@kuankuan/deep-proxy 是一个工具库,可以代理一个对象及其所有嵌套对象。它提供了一种灵活且可定制的方式,用于拦截和修改对象属性和方法的行为。

安装

你可以通过 npm 安装 @kuankuan/deep-proxy

npm install @kuankuan/deep-proxy

使用方法

要使用 @kuankuan/deep-proxy,你需要从库中导入 getDeepProxy 函数:

import { getDeepProxy } from '@kuankuan/deep-proxy';

代理对象

要代理一个对象,只需将对象和一个选项对象传递给 getDeepProxy 函数:

const target = { foo: 'bar' };
const options = {
  // 在这里定义你的自定义处理程序
};

const proxy = getDeepProxy(target, options);

选项

选项对象允许你为代理对象上的各种操作定义自定义处理程序。每个处理程序都是一个函数,当在对象上执行相应的操作时,该函数将被调用。

以下是可用的处理程序:

  • set:当在对象上设置属性时调用。
  • get:当访问对象上的属性时调用。
  • apply:当在对象上调用函数时调用。
  • construct:当对象被用作构造函数时调用。
  • defineProperty:当在对象上定义属性时调用。
  • deleteProperty:当从对象中删除属性时调用。
  • getOwnPropertyDescriptor:当访问属性的描述符时调用。
  • getPrototypeOf:当访问对象的原型时调用。
  • has:当检查属性是否存在时调用。
  • isExtensible:当检查对象是否可扩展时调用。
  • ownKeys:当访问对象的键时调用。
  • preventExtensions:当使对象不可扩展时调用。
  • setPrototypeOf:当设置对象的原型时调用。

每个处理程序函数接收以下参数:

  • target:被代理的目标对象。
  • keys:表示当前属性路径的键数组。
  • ...其他参数:特定于每个处理程序的额外参数。

示例

下面是一个示例,演示如何使用 @kuankuan/deep-proxy 拦截对象上的属性访问:

const target = { foo: 'bar' };
const options = {
  get(target, keys, p, value, receiverTarget) {
    console.log(`访问了属性 ${p.toString()}。`);
    return value;
  },
};

const proxy = getDeepProxy(target, options);

console.log(proxy.foo); // 输出:"访问了属性 foo。"

贡献

欢迎贡献!如果你发现任何问题或有改进建议,请在 GitHub 仓库上开启一个 issue 或提交一个 pull 请求。

许可证

该项目基于 MulanPSL-2.0 许可证。详细信息请参阅 LICENSE 文件。

0.1.0

6 months ago