javascript - 在调用对象的情况下是否可以将函数分配给对象?

标签 javascript

我有一种叫做 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/

相关文章:

javascript - Node Express 中间件

javascript - 使用切换按钮淡出/淡入

javascript - ExtJS 4.2.1 : Cannot retrieve HTTP Response headers upon Ext. ajax.request 回调

javascript - 如何在 Javascript 中为每种颜色生成 3 种色调?

javascript - 正则表达式可以匹配字符串开头或结尾的字符(但不能同时匹配两者)吗?

javascript - 如何更改从 JSON 创建的表的单元格颜色

javascript - 为什么以及如何在 console.log 中引用变量来修复我遇到的加载错误?

javascript - 处理多个 api 响应中不同键的最佳方式

Javascript:如何用更实用的模式替换嵌套的 if/else?

javascript - Kendo Grid 多选复选框