首先我們繼續(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è)對(duì)象的方法是不同的方法。那么我們知道,在C#中,每個(gè)對(duì)象會(huì)維護(hù)著一個(gè)方法表,可是方法表應(yīng)該指向同一塊地址。如果是這樣的話,那當(dāng)我們聲明了100個(gè)對(duì)象,是不是要建立100個(gè)對(duì)象拷貝,對(duì)空間是不是一個(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è)問題。
更多信息請(qǐng)查看IT技術(shù)專欄