首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MDN构造函数属性解释混乱

MDN构造函数属性解释混乱
EN

Stack Overflow用户
提问于 2016-07-14 07:16:07
回答 2查看 54关注 0票数 1

我正在阅读这篇文章关于constructor属性的文章,它声明如下:

返回对创建实例原型的对象函数的引用。

他们举了一个例子:

代码语言:javascript
复制
function Tree(name) {
  this.name = name;
}

var theTree = new Tree('Redwood');
console.log('theTree.constructor is ' + theTree.constructor);

这里的实例是theTree,它的原型是Object.getPrototypeOf(theTree),它是对象函数,而不是Tree。我误会什么了?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-07-14 07:30:01

对象的原型通常是从其构造函数继承的:

代码语言:javascript
复制
function Tree() {}
Tree.prototype.foo = function () {};

var theTree = new Tree();

theTree现在拥有了它的原型链中的theTree.foofunction Tree初始化了对象,并负责其原型链的内容。这就是为什么他们将其表达为“创建实例原型的对象函数”的原因。

票数 2
EN

Stack Overflow用户

发布于 2016-07-14 08:28:14

Object.getPrototypeOf(theTree)是树函数的原型

代码语言:javascript
复制
Object.getPrototypeOf(theTree) == Tree.prototype; // true

两者都引用同一个对象。

而且Tree.prototype有一个名为‘构造函数’的属性,它实际上是对树函数的引用

代码语言:javascript
复制
theTree.contructor == Tree.prototype.constructor ;// true

基本上,theTree有一个proto链接( proto,____proto____),这个proto链接指向Tree.prototype。因此,当您执行theTree.constructor时,它实际上遵循proto链接,并到达Tree.prototype,并找到本身具有树函数的构造函数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38367835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档