我正在经历继承的概念,现在的情况是让我们拥有空构造函数
function Constructor(/* i am an empty function */ );
现在我们要向Object.prototype添加一个属性并创建一个Constructor函数的实例
Object.prototype.game = "hello i am a game";
let a = new Constructor();
a.game();
现在我们知道输出是“你好我是一个游戏”。因此var继承自Object,因此Constructor函数继承自Object
Constructor.__proto__ === Object.prototype
必须是真的,为什么它会变得虚假
Constructor.proto === Object.prototype
不,这不应该是真的。应该如何是如下:
a.__proto__ === Constructor.prototype
但是(在这种情况下)
Constructor.prototype.__proto__ === Object.prototype
应该是真的。
第一个直接遵循原型定义。从构造函数创建的对象的__proto__
属性等于该函数的prototype
。
第二个事实是Constructor.prototype
也是一个对象 - 并且是使用Object
构造函数创建的(因此类似于第一种情况,它的__proto__
必须等于构造函数的prototype
,即Object.prototype
)。
PS。但是要直接回答你的问题Constructor.__proto__
等于什么,它是Function.prototype
(推理可能会像:这是因为Function
对象是创建你的Constructor
函数的人)。