JavaScript 構(gòu)造函數(shù) 面相對象學習必備知識
更新時間:2010年06月09日 01:11:25 作者:
關(guān)于JavaScript構(gòu)造函數(shù),如今出現(xiàn)了很多JavaScript的框架,例如jQuery、Ext等等這些,這些將JavaScript作為一種面向?qū)ο蟮恼Z言進行編程,那么JavaScript到底是怎么樣實現(xiàn)面向?qū)ο蟮囊恍┨卣鞯哪?,首先,我們來看看JavaScript怎么樣來定義一個構(gòu)造函數(shù)。
復(fù)制代碼 代碼如下:
function A(x)
{
this.x = x;
}
var obj = new A(5);
alert(obj.x);
這段代碼十分簡單,但是我們重要的是看到了一個十分驚訝的結(jié)果,obj被我們賦予了一個屬性x,就如同我們在C#中使用某個類的實例的時候一樣。那么這個屬性是怎么樣產(chǎn)生的呢?
關(guān)鍵語句:this.x=x。這句話就是進行一個屬性的申明與賦值,這里,我們肯定會問到,this是什么?為什么可以使用this.x來進行申明與賦值屬性呢?
其實this代表的就是我們剛剛實例化出來的obj,就相當于我們使用obj去調(diào)用了構(gòu)造函數(shù)A里面的屬性、方法等等。
那么,我們怎么樣去在構(gòu)造函數(shù)中定義一個方法呢?
復(fù)制代碼 代碼如下:
function A(x,y)
{
this.x = x;
this.y = y;
A.prototype.FunX = function(){alert(x)};
A.prototype.FunY = function(){alert(y)};
}
var obj = new A(5,10);
alert(obj.x);
alert(obj.y);
obj.FunX();
obj.FunY();
執(zhí)行的結(jié)果十分簡單,彈出5、10、5、10的結(jié)果,可以看到
復(fù)制代碼 代碼如下:
A.prototype.FunX = function(){alert(x)};
A.prototype.FunY = function(){alert(y)};
這兩句代碼定義了兩個方法,分別是FunX和FunY。那么,如果現(xiàn)在出現(xiàn)了一種情況,如果我們需要臨時的給A函數(shù)添加方法怎么辦呢?
復(fù)制代碼 代碼如下:
function A(x,y)
{
this.x = x;
this.y = y;
}
A.prototype.FunX = function(){alert("5")};
var obj = new A(5,10);
alert(obj.x);
alert(obj.y);
obj.FunX();
A.prototype.FunY = function(){alert("10")};
obj.FunY();
運行這段代碼,我們可以看到,彈出的結(jié)果還是和以前的結(jié)果一樣,但是我們將兩個方法都定義在了外邊,而且方法FunY是定義在實例化之后的,那么這里大家看出來了什么沒?很顯然,在我們使用obj.FunY()語句時候,代碼會重新的去構(gòu)造一下obj,然后再來執(zhí)行此方法,那么如果代碼改成這樣?
復(fù)制代碼 代碼如下:
obj.FunY();
A.prototype.FunY = function(){alert("10")};
很顯然,F(xiàn)unY()就不會去執(zhí)行方法了。
下一遍,將會說一下關(guān)于JavaScript的構(gòu)造函數(shù)與原型(prototype),若有疑問或不正之處,歡迎提出指正和討論。
您可能感興趣的文章:
- Javascript面向?qū)ο缶幊蹋ㄈ?非構(gòu)造函數(shù)的繼承
- Javascript面向?qū)ο缶幊蹋ǘ?構(gòu)造函數(shù)的繼承
- JS面向?qū)ο蠡A(chǔ)講解(工廠模式、構(gòu)造函數(shù)模式、原型模式、混合模式、動態(tài)原型模式)
- js面向?qū)ο笾R妱?chuàng)建對象的幾種方式(工廠模式、構(gòu)造函數(shù)模式、原型模式)
- js面向?qū)ο笤O(shè)計用{}好還是function(){}好(構(gòu)造函數(shù))
- js實現(xiàn)輪播圖的兩種方式(構(gòu)造函數(shù)、面向?qū)ο?
- 不用構(gòu)造函數(shù)(Constructor)new關(guān)鍵字也能實現(xiàn)JavaScript的面向?qū)ο?/a>
- JavaScript面向?qū)ο笤O(shè)計二 構(gòu)造函數(shù)模式
- 深入理解javascript構(gòu)造函數(shù)和原型對象
- js構(gòu)造函數(shù)創(chuàng)建對象是否加new問題
- 淺談javascript構(gòu)造函數(shù)與實例化對象
- JS面向?qū)ο缶幊袒A(chǔ)篇(一) 對象和構(gòu)造函數(shù)實例詳解
相關(guān)文章
JavaScript RegExp方法獲取地址欄參數(shù)(面向?qū)ο?
個人認為循環(huán)用得多不是什么好事。這里推薦一種利用OO思想加上RegExp的方法,使它更靈活、高效。2009-03-03
javascript最常用與實用的創(chuàng)建類的代碼
組合構(gòu)造函數(shù)模式和原型模式
2010-08-08
圍繞面向?qū)ο蟮膸状箨P(guān)鍵字:封裝 ,繼承 ,多態(tài) ,展開JavaScript面向?qū)ο?/div> 2009-03-03

