1. 程式人生 > >javascript深入瞭解(繼承)

javascript深入瞭解(繼承)

function Father(){
	this.familyName = 'Fan';
	this.name = 'aaa';
}
Father.prototype.showName = function(){
	alert(this.familyName+' '+this.name);
}
function San(){
	this.name = 'Lizhi'
}
San.prototype = new Father();
San.prototype.showName = function(){
	alert(this.name+' '+this.familyName);
}
var s = new San();
s.showName();//Fan Lizhi
San.prototype = new Father(); 就是將例項的Father賦值給 San的原型物件,例項後的Father包含建構函式Father的屬性familyName,以及Father原型物件中的屬性,也一起賦值給了San的原型,所以例項化San的時候同時也包含了Father中的屬性。因此才實現了繼承關係.當我們s.showName();時,我很會開始在物件裡面一級級查詢,首先我們會查詢建構函式San(),我們先找San的建構函式沒有這個方法,然後又開始查詢san的原型鏈中,發現了從Father那裡繼承過來的showName();方法,於是返回。同樣的訪問順序得到familyName和name。San.prototype = new Father();的意思其實就是 將例項化Father的屬性賦值給San的原型。