我有一种叫做 Action 的对象。它们的构造如下:
const Action = (name, type, cb) => ({
name,
type,
do: cb
})
const dumbtion = Action('dumb', 'system', () => { console.log("I'm dumb")})
它可以满足我的需求,但我更喜欢使用 dumbtion()
而不是 dumbtion.do()
。有没有办法在 javascript 中实现这一点?
最佳答案
可能,通过将属性直接分配给函数,然后返回函数:
const Action = (actionName, type, cb) => (
Object.assign(cb, { actionName, type })
)
const dumbtion = Action('dumb', 'system', () => { console.log("I'm dumb")})
dumbtion();
console.log(dumbtion.type);
但这不是一个好主意——函数通常不应该添加非标准属性。我更喜欢您当前使用的代码。
(请注意属性 name
不能使用,因为它在函数上保留 - 它不能被重新分配)
关于javascript - 在调用对象的情况下是否可以将函数分配给对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55673512/