https://danmartensen.svbtle.com/the-anatomy-of-a-javascript-function#creating-function-instances_3
我试图理解这篇关于如何创建 javascript 函数对象的文章。 它说:
新实例对象被隐式分配了许多内部属性,其中之一是 [[prototype]] 属性。引用它的原型(prototype)对象的 Function 构造函数的原型(prototype)属性被复制到这个新对象的 [[prototype]] 属性中
基于上面的语句我写了这段代码:
function Person(){
}
console.dir(Function.prototype);
console.dir(Person.prototype);
根据声明,Function.prototype 被分配给新创建的函数对象的原型(prototype)(在本例中为 Person.prototype)。我打印了他们两个。内容看起来不同。
谁能解释一下我的理解哪里出了问题。顺便说一下,我也查看了 Ecmascript 规范,它有相同的声明
最佳答案
According to the statement,
Function.prototype
is assigned to a newly created function object's prototype (Person.prototype
in this case)
没有。文中谈到internal properties ,例如 [[原型(prototype)]]。您不能将其作为普通属性访问,您可以使用 Object.getPrototypeOf
访问它.事实上,
Object.getPrototypeOf(Person) === Function.prototype // true
.prototype
属性是另一回事。它确实也是在函数对象的实例化时创建的,但它确实填充了一个继承自(具有 [[prototype]])Object.prototype
并包含 .constructor 的对象
属性指向函数。该对象将成为使用 new Person
创建的实例的 [[prototype]]。
关于javascript - 如何创建 javascript 函数对象并获取其内部属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39601485/