欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2010年06月09日 01:11:25   作者:  
關(guān)于JavaScript構(gòu)造函數(shù),如今出現(xiàn)了很多JavaScript的框架,例如jQuery、Ext等等這些,這些將JavaScript作為一種面向?qū)ο蟮恼Z言進(jìn)行編程,那么JavaScript到底是怎么樣實(shí)現(xiàn)面向?qū)ο蟮囊恍┨卣鞯哪?,首先,我們來看看JavaScript怎么樣來定義一個(gè)構(gòu)造函數(shù)。
復(fù)制代碼 代碼如下:

function A(x)
{
this.x = x;
}
var obj = new A(5);
alert(obj.x);

這段代碼十分簡(jiǎn)單,但是我們重要的是看到了一個(gè)十分驚訝的結(jié)果,obj被我們賦予了一個(gè)屬性x,就如同我們?cè)贑#中使用某個(gè)類的實(shí)例的時(shí)候一樣。那么這個(gè)屬性是怎么樣產(chǎn)生的呢?

關(guān)鍵語句:this.x=x。這句話就是進(jìn)行一個(gè)屬性的申明與賦值,這里,我們肯定會(huì)問到,this是什么?為什么可以使用this.x來進(jìn)行申明與賦值屬性呢?

其實(shí)this代表的就是我們剛剛實(shí)例化出來的obj,就相當(dāng)于我們使用obj去調(diào)用了構(gòu)造函數(shù)A里面的屬性、方法等等。

那么,我們?cè)趺礃尤ピ跇?gòu)造函數(shù)中定義一個(gè)方法呢?

復(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é)果十分簡(jiǎn)單,彈出5、10、5、10的結(jié)果,可以看到
復(fù)制代碼 代碼如下:

A.prototype.FunX = function(){alert(x)};
A.prototype.FunY = function(){alert(y)};

這兩句代碼定義了兩個(gè)方法,分別是FunX和FunY。那么,如果現(xiàn)在出現(xiàn)了一種情況,如果我們需要臨時(shí)的給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é)果一樣,但是我們將兩個(gè)方法都定義在了外邊,而且方法FunY是定義在實(shí)例化之后的,那么這里大家看出來了什么沒?很顯然,在我們使用obj.FunY()語句時(shí)候,代碼會(huì)重新的去構(gòu)造一下obj,然后再來執(zhí)行此方法,那么如果代碼改成這樣?
復(fù)制代碼 代碼如下:

obj.FunY();
A.prototype.FunY = function(){alert("10")};

很顯然,F(xiàn)unY()就不會(huì)去執(zhí)行方法了。

下一遍,將會(huì)說一下關(guān)于JavaScript的構(gòu)造函數(shù)與原型(prototype),若有疑問或不正之處,歡迎提出指正和討論。

相關(guān)文章

  • JS 繼承實(shí)例分析

    JS 繼承實(shí)例分析

    主要有三種方法: 1. this.method=Parent; this.method=Parent's constructor 2. Parent.call(this,arg,arg,arg.....);3.Parent.apply(this,arg.arg...) //for Array 還是來點(diǎn)實(shí)際的吧...
    2008-11-11
  • JS類的封裝及實(shí)現(xiàn)代碼

    JS類的封裝及實(shí)現(xiàn)代碼

    js并不是一種面向?qū)ο虻恼Z言, 沒有提供對(duì)類的支持, 因此我們不能像在傳統(tǒng)的語言里那樣 用class來定義類, 但我們可以利用js的閉包封裝機(jī)制來實(shí)現(xiàn)js類, 我們來封裝一個(gè)簡(jiǎn)的Shape類.
    2009-12-12
  • Javascript 面向?qū)ο?繼承

    Javascript 面向?qū)ο?繼承

    繼承是面向?qū)ο笾斜炔豢缮俚奶匦?,但javascript中并沒有繼承的概念機(jī)制,但我們可以自己來實(shí)現(xiàn)這種功能。
    2010-05-05
  • JavaScript面向?qū)ο笾甈rototypes和繼承

    JavaScript面向?qū)ο笾甈rototypes和繼承

    本文翻譯自微軟的牛人Scott Allen Prototypes and Inheritance in JavaScript ,本文對(duì)到底什么是Prototype和為什么通過Prototype能實(shí)現(xiàn)繼承做了詳細(xì)的分析和闡述,是理解JS OO 的佳作之一
    2012-07-07
  • 最新評(píng)論