首页 > 代码库 > js继承之原型链方式实现

js继承之原型链方式实现

 温故而知新:

   在之前的文章已经重点了解了原型对象,今天就理一理这个原型对象在原型链式的继承中的使用

function a(x,y){this.x=x;this.y=y;} //定义一个函数,当构造函数用(正经从程序用大写哈!)

  原型对象上添加属性

a.prototype.ayuanxing="a原型属性"; 

 new 一个对象看看咯:

技术分享

 

同样的,定义一个b函数:

function b(z){this.z=z};
b.prototype.byuanxing="b原型属性";

同样看看new 一个b对象看看:

技术分享

ok,现在有两个同等的类a,b;如何让他们两个拥有父子关系?

b.prototype=new a(); //将a的实例对象作为b的原型对象

再new 一个b对象看看:

技术分享

能得出什么?

1:b的原型对象已经变成了a,且原型对象(a)的属性是赋值时候决定的(我没有赋值所以是undefined):

2:b的原型对象(a) 它也有自己的原型对象,指向a.prototype,因为没有修改过,所以还保留着ayuanxing这个 属性;

3,:而b.prototype.byuanxing因为我们修改了b的原型对象指向,所以覆盖了之前的原型对象

技术分享

所以通过原型链,b2可以访问到原型链上的属性,再回头看看a对象:

技术分享

还是正常的,这就是原型链式的继承的实现;

个人观点:如描述错误,恳请指正!谢谢!

 

js继承之原型链方式实现