|
系列文章導(dǎo)航:
JavaScript學(xué)習(xí)筆記一——數(shù)據(jù)類型
JavaScript學(xué)習(xí)筆記二——函數(shù)
JavaScript學(xué)習(xí)筆記三——作用域
JavaScript學(xué)習(xí)筆記四——Eval函數(shù)
JavaScript學(xué)習(xí)筆記五——類和對象
JavaScript學(xué)習(xí)筆記六:prototype的提出
Javascript學(xué)習(xí)筆記七——原型鏈的原理
Javascript學(xué)習(xí)筆記八——用JSON做原型
Javascript學(xué)習(xí)筆記九——prototype封裝繼承
Javascript學(xué)習(xí)筆記十——網(wǎng)頁運(yùn)行原理
Javascript學(xué)習(xí)筆記十一——包裝DOM對象
Javascript學(xué)習(xí)筆記十三——關(guān)于響應(yīng)事件
Javascript學(xué)習(xí)筆記十二——Ajax入門
首先我們繼續(xù)上文的代碼,我們來把這段代碼延伸一下:
<script type="text/Javascript"> var Person = function (name, age) { this.name = name; this.age = age; this.Introduce = function () { alert("My name is " + this.name + ".I'm " + this.age); }; }; var person1 = new Person("飛林沙", 21); var person2 = new Person("kym", 26); alert(person1.Introduce == person2.Introduce); script>
結(jié)果彈出false。也就是說,這兩個(gè)對象的方法是不同的方法。那么我們知道,在C#中,每個(gè)對象會(huì)維護(hù)著一個(gè)方法表,可是方法表應(yīng)該指向同一塊地址。如果是這樣的話,那當(dāng)我們聲明了100個(gè)對象,是不是要建立100個(gè)對象拷貝,對空間是不是一個(gè)很大的浪費(fèi)呢?
于是我們就想了這樣的解決辦法,用prototype:
<script type="text/Javascript"> var Person = function (name, age) { this.name = name; this.age = age; }; Person.prototype.Introduce = function () { alert("My name is " + this.name + ".I'm " + this.age); } var person1 = new Person("飛林沙", 21); var person2 = new Person("kym", 26); alert(person1.Introduce == person2.Introduce); script>
這樣就可以了。所以你還會(huì)再說是否用prototype都是一樣的么?其實(shí)我以前也是這么理解的,在這次偶然的試驗(yàn)中看到了這個(gè)問題。
it知識(shí)庫:JavaScript學(xué)習(xí)筆記六:prototype的提出,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時(shí)間聯(lián)系我們修改或刪除,多謝。