如果我能理解以下问题,那么函数在 JavaScript 中是对象的概念对我来说是可以接受的。我四处搜索并查看了 javascript 引擎以尝试找到答案,但到目前为止我没有找到任何解释......
像下面这样的对象可以理解地放置在 HashMap 类型的构造中。
var person = {
firstName:"John",
lastName:"Doe",
age:50,
eyeColor:"blue"
};
但是,说这也是一个对象是我陷入困境的地方:
var name = function () {
alert ('name');
}
在内存方面,这个函数是怎么存储的?
函数的“ HashMap ”中的语句是否按执行顺序排列?所以每个属性都是在另一个属性之后调用的?
我可能遗漏了某些东西或想象出了错误的东西。
谢谢。
附言
为了解决问题 2,
假设我的函数中有一个 if 语句...它会存储在可通过其属性之一访问的属性中吗?
最佳答案
javascript 中的每个对象都有属性(由字符串或符号标识的键值对)并且它有 internal slots 。
函数对象 name
以与 person
对象相同的格式存储,但它们的内部插槽不同。
person
的属性是firstName
、lastName
、age
和eyeColor
, 每个都持有各自的原始值person
的内部插槽是(除其他外):[[prototype]]
,指向Object.prototype
name
的属性是name
、prototype
和length
(典型值为Function
instances)name
的内部插槽是(除其他外):[[prototype]]
,指向Function.prototype
[[ECMAScriptCode]]
,指向函数的代码[[Environment]]
,指向创建闭包的范围
免责声明:这只是它的行为方式,引擎可以根据需要实现它。尽管如此,它仍然可以很好地用作心智模型,并且重要的是要了解对象在公开可见的属性之下有一层。
关于JavaScript - 函数作为对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35761476/