初學者快速學會javascript原型,原型鏈,原型繼承

初學者學習javascript可能會感受很困擾,可是你一旦真正瞭解了它,我相信你會愛上它。學習ECMAScript,總繞不開原型,原型鏈,繼承等等這些知識。今天把它們放在一起,首先把理解他們做爲小目標,構建一個完備的結構。不要眼高手低,咱們一步一步來理解。javascript

從對象的開始

1.何爲對象?對象是數據,這個數據擁有屬性和方法,有能夠進行封裝和繼承等等的特色。
2.何爲面向對象編程?面向對象編程是一個使用一系列的對象進行協做,從而靈活高效地解決複雜問題的編程思想。java

對象那麼好,怎麼才能找一個(呸,實際上是建立)?

建立對象的方法:對象字面量、工廠模式、構造函數模式、原型模式等。
前面三個暫且不看,他們的短板你們應該都知道。主要來看如何用原型模式建立一個對象。編程

來個看爛了的例子,把一個「」做爲對象,盡情地建立吧:閉包

function Person(){
}
Person.prototype.name = "程流流";//是的,個人名字
Person.prototype.age = 21;
Person.prototype.job = "大學生";
Person.prototype.sayName = function(){
alert(this.name);
};
var person1 = new Person();
person1.sayName(); //"程流流"
var person2 = new Person();
person2.sayName(); //"程流流"
alert(person1.sayName == person2.sayName); //true

例子雖然簡單,可是內容豐富,來解剖一下:
這個例子裏面有構造函數,原型對象,實例對象, prototype
屬性,constructor屬性,_proto_屬性,很豐富吧。關於他們之間的關係,我學習的時候很容易弄混掉(由於我大腦不夠聰慧,這個沒辦法),可是有天上課的時候忽然就想明白了,而後就寫在了書上。看圖:函數

clipboard.png

是否是很簡單,明白了他們都是什麼以及之間的關係後咱們進行到下一步...學習

原型鏈

原型鏈是一條鏈。咱們前面利用構造器(就是constructor)建立了新對象,新對象都有prototype屬性,而咱們new出來的新實例對象有默認的一個只想構造器原型(原型對象)的內部指針_proto_,那個原型prototype它也是個對象,它也有本身的原型,原型對象又包含一個指向另外一個原型的指針,相應地,另外一個原型中也包含着一個指向另外一個構造函數
的指針。假如另外一個原型又是另外一個類型的實例,那麼上述關係依然成立,如此層層遞進,就構成了實例與原型的鏈條。this

原型鏈有什麼用

來談談繼承,繼承能夠利用構造函數,使用prototype屬性等來實現。原型繼承主要就是用原型鏈來實現,怎麼個繼承法呢?就是利用原型讓一個引用類型來繼承另外一個引用類型的屬性和方法。
記得上面的草圖吧,我來畫一個好看點的:spa

clipboard.png

看到了嗎,沿着原型鏈一環一環的繼承。prototype

初學者看到這裏相信已經對面向對象編程有關的重要概念有了必定理解,下一篇來談一談有關閉包的知識。第一次寫文章,文筆太差,也沒有高深的技術在裏面,若是幫助初學者理清了思路,個人目的就達到了。指針

相關文章
相關標籤/搜索