JavaScript學習筆記六:prototype的提出
系列文章導航:
Javascript學習筆記九——prototype封裝繼承
首先我們繼續上文的代碼,我們來把這段代碼延伸一下:
<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>
結果彈出false。也就是說,這兩個對象的方法是不同的方法。那么我們知道,在C#中,每個對象會維護著一個方法表,可是方法表應該指向同一塊地址。如果是這樣的話,那當我們聲明了100個對象,是不是要建立100個對象拷貝,對空間是不是一個很大的浪費呢?
于是我們就想了這樣的解決辦法,用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>
這樣就可以了。所以你還會再說是否用prototype都是一樣的么?其實我以前也是這么理解的,在這次偶然的試驗中看到了這個問題。
全站熱搜