JavaScript 允许将函数视为对象——如果您首先将变量定义为函数,则可以随后向该函数添加属性。你如何做相反的事情,并为“对象”添加一个功能?
这有效:
var foo = function() { return 1; };
foo.baz = "qqqq";
此时, foo()
调用函数, foo.baz
的值为“qqqq”。
但是,如果您先进行属性赋值部分,那么您随后如何将函数赋值给变量呢?
var bar = { baz: "qqqq" };
我现在可以做什么来安排 bar.baz
具有值“qqqq” 和 bar()
调用函数?
原文由 mjs 发布,翻译遵循 CC BY-SA 4.0 许可协议
在这里很容易混淆,但你不能(很容易或清楚地或据我所知)做你想做的事。希望这将有助于解决问题。
首先,Javascript 中的每个对象都继承自 Object 对象。
其次,函数 是 Javascript 中的对象。具体来说,它们是一个 Function 对象。 Function 对象继承自 Object 对象。检查 函数构造函数
一旦将变量声明为“对象”,就不能(轻松或清楚地或据我所知)将其转换为 Function 对象。您需要声明一个函数类型的新对象(使用函数构造函数、为变量分配匿名函数等),并从旧对象复制方法的任何属性。
最后,预测一个可能的问题,即使将某些东西声明为函数,你也不能(据我所知)更改函数体/源代码。