我正在研究继承的概念,现在的情况是让我们有一个空的构造函数
function Constructor(/* i am an empty function */ );
现在我们要向 Object.prototype 添加属性并创建构造函数的实例
Object.prototype.game = "hello i am a game";
let a = new Constructor();
a.game();
现在我们知道输出将是“hello i am a game”。因此var a继承自Object 和因此构造函数继承自 Object 因此
Constructor.__proto__ === Object.prototype
必须是正确,而不是为什么结果是错误
最佳答案
Constructor.proto === Object.prototype
不,这不应该是真的。正确的应该是:
a.__proto__ === Constructor.prototype
但是(在本例中)
Constructor.prototype.__proto__ === Object.prototype
应该是真的。
<小时/>第一个直接来自原型(prototype)定义。
从构造函数创建的对象的 __proto__
属性等于该函数的 prototype
。
第二个事实是 Constructor.prototype
也是一个对象 - 并且是使用 Object
构造函数创建的(因此与第一种情况类似,其 __proto__
必须等于构造函数的 prototype
,即 Object.prototype
)。
Constructor.__proto__
等于什么,它是 Function.prototype
(推理可能是这样的:这是因为 Function
对象是创建您的构造函数
函数的人)。
关于javascript - FUNCTIONS 的继承正在成为一场噩梦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47977621/