猿问

js 原型链继承

        function Foo1(){

           this.name1 = '1';

        }

        function Foo2(){

           this.name2 = '2';

        }

        Foo2.prototype = new Foo1();

        function Foo3(){

           this.name = '3';

        }

        Foo3.prototype = new Foo2();

        var foo3 = new Foo3();

        console.dir(foo3);

各位帮忙分析下,为什么箭头指向的地方打印出来不是Foo2而是Foo1,这是什么原理?

慕妹3146593
浏览 485回答 3
3回答

慕村225694

因为你将Foo1的实例复制给Foo2的原型,这时候Foo2.prototype.constructor指向的是Foo1,如果你在Foo2.prototype=new Foo1后面加一行Foo2.prototype.constructor=Foo2,将constructor重新修改为Foo2。应该就能达到你想要的结果了。

aluckdog

Foo3通过prototype属性将原型指向了Foo2,但是最终Foo2的原型也是Foo1
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答