js继承之原型链方式实现

温故而知新:

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

原型对象上添加属性

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

new 一个对象看看咯:

js继承之原型链方式实现

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

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

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

js继承之原型链方式实现

ok,现在有两个同等的类a,b;如何让他们两个能够通过原型链的连接在一起?

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

再new 一个b对象看看:

js继承之原型链方式实现

能得出什么?

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

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

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

js继承之原型链方式实现

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

js继承之原型链方式实现

还是正常的,这就是原型链的实现;将两个独立的类,通过原型链的查找机制能够实现单向的访问;

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

上一篇:OnClientClick和OnClick


下一篇:Python+Appium自动化测试(14)-yaml配置Desired capabilities