写点什么

LeetCode 题解:2690. 无穷方法对象,Proxy

作者:Lee Chen
  • 2025-02-13
    福建
  • 本文字数:664 字

    阅读完需:约 2 分钟

Problem: 2690. 无穷方法对象



思路

这个问题的核心在于创建一个对象,该对象能够响应对其任何方法的调用,并返回调用的方法名称。为了实现这一点,我们可以利用 JavaScript 中的 Proxy 对象。Proxy 对象允许我们自定义对象的基本操作,例如属性读取、设置等。在这个场景中,我们将使用 Proxy 来拦截对任何方法的调用,并返回一个函数,这个函数简单地返回被调用方法的名称。

解题方法

我们将定义一个函数 createInfiniteObject,该函数返回一个 Proxy 对象。这个 Proxy 对象的 get 拦截器会拦截所有属性的读取操作。对于每个被读取的属性(在这个场景中是方法名),get 拦截器返回一个新的函数。当这个函数被调用时,它返回原始属性(方法)的名称。

复杂度

时间复杂度:


  • 每次方法调用的处理时间是常数级别的,因为我们只是返回一个函数,然后这个函数返回方法名。


空间复杂度:


  • 我们只创建了一个 Proxy 对象,不管调用多少次方法,空间复杂度保持不变。

Code

/** * @return {Object} */var createInfiniteObject = function() {  // 使用 Proxy 创建一个无穷方法对象  return new Proxy({}, {    get(target, prop, receiver) {      // 拦截对象属性的读取      // 返回一个函数,该函数返回被调用的方法名称      return () => prop;    }  });};
复制代码


在这段代码中,createInfiniteObject 函数返回一个 Proxy 对象,该对象的 get 方法被用来拦截对任何方法的调用,并返回一个函数。这个返回的函数在被调用时,会返回方法的名称。因此,当你调用 obj.abc123() 时,它返回 "abc123",这是因为 abc123 是被调用的方法名称。

发布于: 刚刚阅读数: 4
用户头像

Lee Chen

关注

还未添加个人签名 2018-08-29 加入

还未添加个人简介

评论

发布
暂无评论
LeetCode题解:2690. 无穷方法对象,Proxy_Lee Chen_InfoQ写作社区