gpt4 book ai didi

javascript - 在 Javascript 中制作函数式 OO 函数

转载 作者:行者123 更新时间:2023-12-01 03:40:15 25 4
gpt4 key购买 nike

假设我有这个简单的 id 函数:

let id = a => a

现在我想让它成为 OO 风格的方法,而不重新定义它,即

let a = {foo:5}
a.id() // {foo:5}

如何将第一个函数变成第二个函数?有一些黑客可以做到这一点吗?我尝试使用 bind,但它似乎不起作用。

最佳答案

要将普通函数 id 转换为隐式依赖于接收者的函数(由 this 引用),您需要为原型(prototype)分配一个辅助函数:

class Cons {
constructor(x) { this.foo = x }
asMethod(f) { return (...args) => f(this, ...args) }
}

const o = new Cons(5);
const id = x => x;

console.log(
o.asMethod(id) ()
);

但这没有多大意义!您的函数必须将接收者作为其第一个参数,因此非常具体,这与通用相反。 id 在示例中起作用只是一个巧合。

关于javascript - 在 Javascript 中制作函数式 OO 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43942008/

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