https://danmartensen.svbtle.com/the-anatomy-of-a-javascript-function#creating-function-instances_3
我试图理解这篇关于如何创建javascript函数对象的文章.它说:
The new instance object is implicitly assigned many internal properties, one being the [[prototype]] property. The Function constructor’s prototype property referencing it’s prototype object is copied into this new object’s [[prototype]] property
基于上面的陈述我写了这段代码:
function Person(){
}
console.dir(Function.prototype);
console.dir(Person.prototype);
Run Code Online (Sandbox Code Playgroud)
根据语句将Function.prototype分配给新创建的函数对象的prototpe(在本例中为Person.prototype).我打印了他们两个.内容看起来不同.
有人可以解释我的理解错误的地方.顺便说一下,我也看了一下Ecmascript的规格,它也有同样的说法
根据声明,
Function.prototype分配给新创建的函数对象的原型(Person.prototype在本例中)
不会.文本讨论内部属性,例如[[prototype]].您无法将其作为普通属性访问,您可以使用它来访问它Object.getPrototypeOf.事实上,
Object.getPrototypeOf(Person) === Function.prototype // true
Run Code Online (Sandbox Code Playgroud)
该.prototype物业是另一回事.它确实在函数对象的实例化时创建,但它确实填充了一个继承自(has [[prototype]])Object.prototype并包含.constructor指向函数的属性的对象.该对象将成为使用创建的实例的[[prototype]] new Person.
| 归档时间: |
|
| 查看次数: |
64 次 |
| 最近记录: |