温故而知新:
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对象:
还是正常的,这就是原型链的实现;将两个独立的类,通过原型链的查找机制能够实现单向的访问;
个人观点:如描述错误,恳请指正!谢谢!