javascript - 在函数之前定义函数属性

标签 javascript

我有一个对象 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/

相关文章:

javascript - typescript : Why does keyof {} have the type never?

javascript - 从浏览器检查器恢复 javascript 中的滚动

javascript - NodeJS Postgres 错误 getaddrinfo ENOTFOUND

javascript - 函数内调用的函数不起作用

javascript - jQuery:使用淡入淡出刷新页面

javascript - 将 Javascript 变量传递给 CakePdf

javascript - 即使我打开另一个选项卡,如何保持 google chrome 扩展程序运行?

javascript - 访问相对 URL 上的 anchor

javascript - Angular UI Router 未将页脚注入(inject) UI View

javascript - 使用 .each 通过 AJAX 按 id 删除所有项目