首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >someFunction.Prototype.constructor对someFunction.constructor

someFunction.Prototype.constructor对someFunction.constructor
EN

Stack Overflow用户
提问于 2015-04-24 11:32:56
回答 2查看 51关注 0票数 1

我知道,JavaScript中的函数具有双重生命,首先是函数(作为创建实例的第一类事物),第二个是普通对象。

但我惊讶地看到以下控制台的输出。

代码语言:javascript
复制
function A() {
    console.info("A");
}
console.info(A.prototype.constructor === A.constructor); // false

我期望它是真的,因为我没有期望对象A上的A属性是它自己的属性。因此,按照原型链查找,它应该是与A.prototype.constructor相同的对象。我哪里错了,或者我遗漏了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-24 12:22:20

我哪里错了,或者我遗漏了什么?

A不从A.prototype继承。A是(构造函数)函数,它是从Function.prototype继承的。做console.log(Object.getPrototypeOf(A)) :-)

A.prototype中只有new A实例继承(其.constructorA)。另见VS.JavaScript中的原型

票数 5
EN

Stack Overflow用户

发布于 2015-04-24 12:14:32

也就是说,因为两者都返回不同的值。

函数构造函数创建一个新的函数对象。在JavaScript中,每个函数实际上都是一个函数对象。

此外,如果您在上面的代码中提供控制台,您将看到

console.info(A.prototype.constructor);输出

代码语言:javascript
复制
function A() {
    console.info("A");
}

console.info(A.constructor);输出

代码语言:javascript
复制
function Function() { [native code] } // both are different.
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29846423

复制
相关文章

相似问题

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