繁体   English   中英

someFunction.Prototype.constructor与someFunction.constructor

[英]someFunction.Prototype.constructor vs someFunction.constructor

我知道以下事实:JavaScript中的函数导致函数的双重生命(作为创建实例的第一类东西)和普通对象的第二生命。

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

function A() {
    console.info("A");
}
console.info(A.prototype.constructor === A.constructor); // false

我期望它是真实的,因为我不期望对象A constructor属性是它自己的属性。 因此, A.prototype.constructor原型链查找之后,它应该与A.prototype.constructor是同一对象。 我在哪里错了或者我错过了什么?

我在哪里错了或者我错过了什么?

A不继承自A.prototype A是(构造函数)函数,并且继承自Function.prototype 做一个console.log(Object.getPrototypeOf(A)) :-)

A.prototype仅继承new A实例(其.constructorA )。 另请参见__proto__VS。 JavaScript中的原型

那是因为两者都返回不同的值。

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

另外,如果您在上面的代码中进行控制台,您将看到

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

function A() {
    console.info("A");
}

console.info(A.constructor); 输出

function Function() { [native code] } // both are different.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM