javascript - 如何创建 javascript 函数对象并获取其内部属性

标签 javascript

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 规范,它有相同的声明

enter image description here

最佳答案

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/

相关文章:

Javascript `await` "SyntaxError: Unexpted identifier"即使我在 `async` 函数中等待

javascript - Angular 模板中的下划线词

javascript - AngularJS:如何激活 ngRepeat 中的第一个非零项?

javascript - 对输入更改 react 缓慢

javascript - 根据base.href或位置生成规范/真实URL

javascript - 客户端AJAX加载解决方法|跨源请求错误

javascript - jquery:运行脚本而不影响具有相同类的 div

javascript - 如何在 bookshelf.js 中设置我的数据库模型

javascript参数匿名函数

javascript - 如何根据变量复制函数?