色尼玛亚洲综合影院,亚洲3atv精品一区二区三区,麻豆freexxxx性91精品,欧美在线91

JavaScript 構(gòu)造函數(shù) 面相對象學(xué)習(xí)必備知識

復(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。這句話就是進(jìn)行一個屬性的申明與賦值,這里,我們肯定會問到,this是什么?為什么可以使用this.x來進(jìn)行申明與賦值屬性呢?

其實this代表的就是我們剛剛實例化出來的obj,就相當(dāng)于我們使用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();

運(yùn)行這段代碼,我們可以看到,彈出的結(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技術(shù)JavaScript 構(gòu)造函數(shù) 面相對象學(xué)習(xí)必備知識,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 夹江县| 如东县| 广州市| 彝良县| 雅江县| 大同市| 明光市| 呼图壁县| 乐业县| 健康| 门头沟区| 五峰| 隆安县| 蒙山县| 城市| 泰宁县| 元谋县| 榆社县| 龙陵县| 巴马| 土默特左旗| 毕节市| 玉龙| 奉贤区| 双辽市| 龙岩市| 鄂尔多斯市| 玉山县| 浦江县| 哈巴河县| 道孚县| 奈曼旗| 浪卡子县| 睢宁县| 富平县| 轮台县| 彭泽县| 东兴市| 广汉市| 陆河县| 青川县|