gpt4 book ai didi

javascript - 使用函数作为字典

转载 作者:搜寻专家 更新时间:2023-11-01 05:04:06 25 4
gpt4 key购买 nike

我正在设计一个小型库,并试图使 API 尽可能小可能,将函数用作字典/对象本身的想法看起来很有吸引力。

这个想法是能够像这样正常地调用一个函数:

fn('hello', 'some other extra info to be processed', etc...)

此调用将处理信息,然后将其存储在某处。可以在特定条件下(不是典型用例)访问此处理后的信息,以这种方式获取信息会很棒:

fn['hello']
//-> some stuff

例如,在 Python 中重载 [] 运算符非常容易,但是据我所知,在大多数情况下,JS 中没有一种简单可靠的方法环境(代理似乎可以解决问题,但我们还没有做到)。 getter 和 setter 不是一个选项,因为用户可以输入任何值。

因此,我只剩下设置函数对象的属性,看起来很老套,因为我可能会覆盖函数的原始属性,例如:

  • 申请
  • 原型(prototype)
  • __proto__

但是,JS 世界中的许多事情都是 hacky,我们很乐意去做每天。问题是:这是否不安全并会导致成千上万只小猫死亡?

最佳答案

你可以使用 settergetter它的功能。

缺点是,您必须事先知道您使用的是哪些键。

function fn(s) {
if (!fn[s]) {
Object.defineProperty(fn, s, { get: function () { document.write('hello '+s+'!<br>'); }, set: function () { } });
}
document.write('hello ' + s + '<br>');
}

fn('stackoverflow');
fn['stackoverflow'];
fn('42');
fn['42'];
fn['stackoverflow'];

关于javascript - 使用函数作为字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37301032/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com