我們先來了解一下,js使用原型物件的作用是什麼?
回答:在使用自定義建構函式建立物件情況下,在例項化多個物件時,可能有很多方法或者屬性相同,比如乙個人的物件建構函式,那麼人都有會跑的方法一樣,都有10個拇指等等屬性,這個人物件的方法,你例項方法的時候都得一一建立記憶體空間,這樣太耗資源,那麼就需要乙個共享空間,共享庫來裝,那麼這樣例項化的時候,相同的內容就不用浪費記憶體空間了,在後面繼承的時候,你的父類原型物件沒有整這個方法,還可以通過原型鏈繼承祖先的內容使用到。
好,下面通過**來試一試
這個效果是什麼呢,請看
那麼我們看出來這樣節省了記憶體空間,都說原型物件,是啥意思,沒看到物件呢?
原來為每個建構函式專門設定了乙個原型物件,用來訪問一些共享屬性,並且可以構成原型鏈。
我們的拇指和run方法都是在這個建構函式的原型物件上面進行增加的,那麼可以用乙個別的獨享,替換這個原型物件嗎?答案是可以的。空口無憑,下面我們上**,驗證一下
通過物件的形式設定原型物件(共享庫)的屬性和方法,效果一樣的,這樣也證明了物件被修改了
function person()
person.prototype=
}
有人會問:**證明原型物件可以更改,首先原型物件我們要怎麼獲取,有以下兩種
1.person.prototyte,這就可以明白為什麼上面讓他等於物件就替代了的原因。
2.p.__proto__(__proto__在實際中一般不適用,因為作用是在方便除錯產生的)。
下面我們通過一張圖來了解一下例項物件,建構函式,原型物件,看完在反覆讀這篇部落格,你就懂了。
看了,還不清楚,我們來一一列印一下
這下一目了然了吧,原型裡面還有原型鏈的存在,也就是下節部落格的內容。
js中原型和原型鏈
let hd new object object.prototype.show function function getname console.dir getname console.log getname.prototype.proto getname.proto proto true con...
JS中原型的理解
我們都知道在js的世界中,幾乎所有東西都是物件,而物件又是通過繼承來層層獲得屬性和方法,var str new string mario console.dir str 首先我們要區分string物件和function string 建構函式的區別,js中物件繼承 proto 的是物件,函式繼承 p...
js中原型鏈的理解
原型鏈是理解js物件導向很重要的一點,這裡主要涉及到兩個點,一是proto,二是prototype,舉個例子吧 例如 我用function建立乙個person類,然後用new person 建立乙個物件的例項,假如叫做pl,在person類的原型prototype新增乙個方法,例如 play方法,那...