LeetCode 题解:2690. 无穷方法对象,Proxy
Problem: 2690. 无穷方法对象
思路
这个问题的核心在于创建一个对象,该对象能够响应对其任何方法的调用,并返回调用的方法名称。为了实现这一点,我们可以利用 JavaScript 中的 Proxy
对象。Proxy
对象允许我们自定义对象的基本操作,例如属性读取、设置等。在这个场景中,我们将使用 Proxy
来拦截对任何方法的调用,并返回一个函数,这个函数简单地返回被调用方法的名称。
解题方法
我们将定义一个函数 createInfiniteObject
,该函数返回一个 Proxy
对象。这个 Proxy
对象的 get
拦截器会拦截所有属性的读取操作。对于每个被读取的属性(在这个场景中是方法名),get
拦截器返回一个新的函数。当这个函数被调用时,它返回原始属性(方法)的名称。
复杂度
时间复杂度:
每次方法调用的处理时间是常数级别的,因为我们只是返回一个函数,然后这个函数返回方法名。
空间复杂度:
我们只创建了一个
Proxy
对象,不管调用多少次方法,空间复杂度保持不变。
Code
复制代码
在这段代码中,createInfiniteObject
函数返回一个 Proxy
对象,该对象的 get
方法被用来拦截对任何方法的调用,并返回一个函数。这个返回的函数在被调用时,会返回方法的名称。因此,当你调用 obj.abc123()
时,它返回 "abc123"
,这是因为 abc123
是被调用的方法名称。
版权声明: 本文为 InfoQ 作者【Lee Chen】的原创文章。
原文链接:【http://xie.infoq.cn/article/61ec3f106e42eeaefe3d2dec1】。文章转载请联系作者。
评论