【发布时间】:2018-08-10 10:17:26
【问题描述】:
function myFunc(){
console.log(myFunc.message);
}
myFunc.message = "Hi John";
myFunc();
执行上述结果-
Answer: 'Hi John'
函数myFunc 上怎么有message 属性? typeof myFunc 产生“函数”,console.log(myFunc) 显示函数内容(上面没有message 属性)。
以上是如何工作的? JavaScript 中的函数内部是对象吗?
注意 - 我知道函数还有其他参数,例如原型和长度。但我也不确定这些是如何实现的。
附加查询 -
由于console.log(myFunc)不显示对象属性,如何列出函数对象的所有属性?
【问题讨论】:
-
是的,JS 函数是对象,因此可以附加任意属性(不是参数)。
-
你的标签 (javascript-objects) 已经回答了。
-
此问题标题中的措辞阅读不正确。你能用英语正确地改写它,这样才有意义吗?! ;-)
-
我认为您对语法 a.b , b 是一个属性而不是 a 的参数这一事实感到困惑。然后仍然使用不正确的措辞来描述您的问题。 Javascript 中的几乎所有内容都可以用对象表示法来表示。
-
@ChrisM 我对您的更正所做的唯一编辑是我删除了更正“参数/属性”,因为即使它是正确的术语,我也会避免更改它,因为它可能是 OP 的一部分误解。完成后,我只是添加了一些格式,但您的大部分编辑都在当前版本中进行。
标签: javascript javascript-objects