为什么我的原型链断了?

时间:2014-01-31 15:27:04

标签: javascript prototype

我是学习JavaScript,我需要一些帮助来了解浏览器中发生的事情。 我有三个JS类:

function A(){}
function B(){}
function C(){}
B.prototype = new A();
C.prototype = new B();
a = new A(); // a instanceof A
b = new B(); // b instanceof A,B
c = new C(); // c instanceof A,B,C

但是当我打电话时:

A.prototype = new C();
// a is not instanceof A
// b is not instanceof A 
// c is not instanceof A
// c is instanceof B

请您帮助我理解当我构建这样的循环原型链时会发生什么以及为什么它会破坏现有的原型链?

更新: 我找到了一种特殊的方法来获取对象的原型,但这使得理解起来并不容易。

Object.getPrototypeOf(a) // A{}
Object.getPrototypeOf(b) // A{}
Object.getPrototypeOf(c) // B{}

1 个答案:

答案 0 :(得分:1)

添加A.prototype = new C();时,您有一个循环引用:

A references B
B references C
C references A
A references B
etc...

这就是为什么你的代码会中断的原因,因为可以不起作用,我知道没有修复它。