我有以下内容:
function Person() {
console.log('person');
}
function Player() {
this.personConstructor();
}
Player.prototype = Person.prototype;
Player.prototype.constructor = Player;
Player.prototype.personConstructor = Person.prototype.constructor;
new Player();
意图是从 Person
继承到 Player
,然后让这个新的子类调用父类的原始构造函数。但是,这会导致无限循环。我做错了什么,为什么会发生循环?
Player.prototype = Person.prototype;
应该改为Player.prototype = Object.create(Person.prototype);
,意为创建一个继承自Person.prototype
的新对象作为Player.prototype
。注意不要改变原来的意思,并保证语言通俗易懂。 - cookie monsterPlayer.prototype
设为指向Person.prototype
的 引用,然后将Player
赋值给Player.prototype.constructor
时,你实际上将其赋值给了Person.prototype.constructor
。所以personConstructor
实际上是一个指向Player
而不是Person
的引用,从而创建了无限调用循环。 - cookie monster