Javascript學(xué)習(xí)筆記6 prototype的提出
更新時(shí)間:2010年01月11日 00:32:20 作者:
所以你還會(huì)再說(shuō)是否用prototype都是一樣的么?其實(shí)我以前也是這么理解的,在這次偶然的試驗(yàn)中看到了這個(gè)問(wèn)題。
首先我們繼續(xù)上文的代碼,我們來(lái)把這段代碼延伸一下:
<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。也就是說(shuō),這兩個(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ì)再說(shuō)是否用prototype都是一樣的么?其實(shí)我以前也是這么理解的,在這次偶然的試驗(yàn)中看到了這個(gè)問(wèn)題。
復(fù)制代碼 代碼如下:
<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。也就是說(shuō),這兩個(gè)對(duì)象的方法是不同的方法。那么我們知道,在C#中,每個(gè)對(duì)象會(huì)維護(hù)著一個(gè)方法表,可是方法表應(yīng)該指向同一塊地址。如果是這樣的話,那當(dāng)我們聲明了100個(gè)對(duì)象,是不是要建立100個(gè)對(duì)象拷貝,對(duì)空間是不是一個(gè)很大的浪費(fèi)呢?
于是我們就想了這樣的解決辦法,用prototype:
復(fù)制代碼 代碼如下:
<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ì)再說(shuō)是否用prototype都是一樣的么?其實(shí)我以前也是這么理解的,在這次偶然的試驗(yàn)中看到了這個(gè)問(wèn)題。
相關(guān)文章
JavaScript展開操作符(Spread operator)詳解
在本篇文章里小編給大家整理的是關(guān)于JavaScript展開操作符(Spread operator)的詳細(xì)介紹以及用法,需要的讀者們參考下。2019-07-07ajax不執(zhí)行success回調(diào)而是執(zhí)行了error回調(diào)
最近在看jQuery的API文檔,在使用到j(luò)Query的ajax時(shí),如果指定了dataType為json,老是不執(zhí)行success回調(diào),而是執(zhí)行了error回調(diào)函數(shù),極度郁悶2012-12-12javascript處理表單示例(javascript提交表單)
這篇文章主要介紹了javascript處理表單示例,處理 各種表單, 以及鏈接,按鈕的通用組件,需要的朋友可以參考下2014-04-04簡(jiǎn)單談?wù)刯avascript中this的隱式綁定
在JavaScript中,this 的概念比較復(fù)雜。除了在面向?qū)ο缶幊讨?,this 還是隨處可用的。這篇文章介紹了this的隱式綁定,希望大家能夠喜歡。2016-02-02怎樣在JavaScript里寫一個(gè)swing把數(shù)據(jù)插入數(shù)據(jù)庫(kù)
在JavaScript里寫一個(gè)swing來(lái)實(shí)現(xiàn)確定取消,來(lái)決定是否執(zhí)行這個(gè)功能 控制把數(shù)據(jù)插入數(shù)據(jù)庫(kù),接下來(lái)介紹實(shí)現(xiàn)方法2012-12-12JavaScript初學(xué)者建議:不要去管瀏覽器兼容
如果可以回到過(guò)去的話,我會(huì)告訴自己這句話:初學(xué)JavaScript的時(shí)候無(wú)視DOM和BOM的兼容性,先了解一些基礎(chǔ)知識(shí)最后再考慮兼容性2014-02-02