我有一个对象 foo
,我想将其作为函数 foo(...)
进行调用。我可以这样做:
foo = n => n * foo.factor;
foo.factor = 2;
foo(2) // returns 4
但是为了使其工作,我需要在其他属性之前编写函数 (n => n * foo.factor
)。以后怎么写呢?我想做这样的事情:
foo = { factor: 2 }
// write function
foo(2) // returns 4
最佳答案
也许使用一个小实用程序:
const functionize = (obj, fn) => Object.assign(fn, obj);
所以人们可以这样做:
let foo = { factor: 2 };
foo = functionize(foo, n => n * foo.factor);
foo(2);
<小时/>
或者你只使用常规函数:
foo.factor = 2;
function foo(n) { return foo.factor * n; }
<小时/>
I wish there was a way to define my object as a function and then later change its body...
const foo = (...args) => (foo.body || () => null)(...args);
foo.factor = 2;
foo.body = n => foo.factor * n;
foo(2);
关于javascript - 在函数之前定义函数属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50683459/