FUNCTIONS的继承正在成为一场噩梦

问题描述 投票:0回答:1

我正在经历继承的概念,现在的情况是让我们拥有空构造函数

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

必须是真的,为什么它会变得虚假

javascript node.js oop inheritance prototype
1个回答
2
投票

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函数的人)。

© www.soinside.com 2019 - 2024. All rights reserved.