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