不知道大家對JS中的原型理解的怎么樣,我想如果大家對JS中的原型對象以及prototype屬性十分熟悉的話對后面原型鏈以及繼承的理解會十分的容易,這里想和大家分享自己對其的理解,請先看下面這段代碼O(∩_∩)O~~
1 function Person(){ 2 } 3 Person.prototype.name = "jingzi"; 4 Person.prototype.age = 20; 5 Person.prototype.sayName = function(){ 6 alert(this.name); 7 }; 8
9 var person1 = new Person(); 10 person1.sayName(); //"jingzi"
這是利用原型模式創建的對象,代碼很短,不是很難理解,如果因為prototype存在疑惑,請向下繼續看
大家請先忽略這張丑陋的圖解(。・_・。)ノ。這可是理解問題的關鍵奧~,步入正文。。。。
每個函數被創建的時候都會有一個prototye屬性,這個屬性會指向函數的原型對象。默認情況下每個原型對象又都會獲取一個constructor屬性,這個屬性包含一個指向prototype屬性所在函數的指針。
如上所示,創建了一個Person函數,它就會擁有一個prototype屬性,這個屬性指向了Person Prototype原型對象,而這個原型對象擁有一個constructor屬性,其指針指向了Person,即prototype屬性所在的函數Person.當你創建一個對象實例的時候,就會擁有一個prototype屬性(因為每個函數被創建的時候都會有一個prototype屬性呀\(^o^)/)。這個prototype屬性會指向其原型對象而不是直接指向其構造函數Person。
這里需要記住實例對象是通過原型對象與構造函數取得聯系的。
不知道這里你是否對原型對象有了一個初步的理解,不知道自己對其的理解是否正確,如果理解存在偏差,請大家狠狠地戳下面( ^_^ )。之后大家是不是會想什么是原型鏈呢?????嘿嘿,明天("明天")繼續。。。。