6.原型与原型链
//Person函数定义时,就自动给其定义了prototype属性,该属性指向一个对象,即原型对象
Person.prototype={
constructor:Person,//反过来指向构造函数对象
_proto_:Object.prototype//绝大多数对象的原型链的终点
};
function Person(){
//new关键字调用构造函数时,隐式创建的this对象中其实存在下面这么一个属性
var this={
_proto_:Person.prototype
};
}
var person=new Person();
Person.prototype.name='caiyun';
Person.prototype={
name:'caiyun'
};
//这两种写法有很大的区别
//第一种还是基于原本的原型对象进行修改name属性或添加name属性
//第二种其实是指向一个全新的对象,其中有name属性
YY.prototype.name='YY';
function YY(){
this.sf='爷爷辈';
}
var yy=new YY();
BB.prototype=yy;
function BB(){
this.sff='爸爸辈';
}
var bb=new BB();
Son.prototype=bb;
function Son(){
this.sfff='儿子辈';
}
var son=new Son();
//上述代码就实现了一个简单的原型链