[英]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
实例(其.constructor
为A
)。 另请参见__proto__VS。 JavaScript中的原型 。
那是因为两者都返回不同的值。
返回对创建实例原型的Object函数的引用。 请注意,此属性的值是对函数本身的引用,而不是包含函数名称的字符串。
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.