国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > AJAX > 正文

AJAX入門之使用for實(shí)現(xiàn)反射機(jī)制

2024-07-21 02:28:54
字體:
供稿:網(wǎng)友
  什么是反射機(jī)制

  反射機(jī)制指的是程序在運(yùn)行時(shí)能夠獲取自身的信息。例如一個(gè)對象能夠在運(yùn)行時(shí)知道自己有哪些方法和屬性。

  在javascript中利用for(…in…)語句實(shí)現(xiàn)反射

  在javascript中有一個(gè)很方便的語法來實(shí)現(xiàn)反射,即for(…in…)語句,其語法如下:

for(var p in obj){
      //語句
}

  這里var p表示聲明的一個(gè)變量,用以存儲(chǔ)對象obj的屬性(方法)名稱,有了對象名和屬性(方法)名,就可以使用方括號(hào)語法來調(diào)用一個(gè)對象的屬性(方法):

for(var p in obj){
      if(typeof(obj[p]=="function"){
             obj[p]();
      }else{
             alert(obj[p]);
      }
}

  這段語句遍歷obj對象的所有屬性和方法,遇到屬性則彈出它的值,遇到方法則立刻執(zhí)行。在后面可以看到,在面向?qū)ο蟮膉avascript程序設(shè)計(jì)中,反射機(jī)制是很重要的一種技術(shù),它在實(shí)現(xiàn)類的繼承中發(fā)揮了很大的作用。

  使用反射來傳遞樣式參數(shù)

  在ajax編程中,經(jīng)常要能動(dòng)態(tài)的改變界面元素的樣式,這可以通過對象的style屬性來改變,比如要改變背景色為紅色,可以這樣寫:

element.style.backgroundcolor="#ff0000";

  其中style對象有很多屬性,基本上css里擁有的屬性在javascript中都能夠使用。如果一個(gè)函數(shù)接收參數(shù)用用指定一個(gè)界面元素的樣式,顯然一個(gè)或幾個(gè)參數(shù)是不能符合要求的,下面是一種實(shí)現(xiàn):

function setstyle(_style){
      //得到要改變樣式的界面對象
      var element=getelement();
      element.style=_style;
}

  這樣,直接將整個(gè)style對象作為參數(shù)傳遞了進(jìn)來,一個(gè)style對象可能的形式是:

var style={
      color:#ffffff,
      backgroundcolor:#ff0000,
      borderwidth:2px
}

  這時(shí)可以這樣調(diào)用函數(shù):

setstyle(style);

  或者直接寫為:

setstyle({ color:#ffffff,backgroundcolor:#ff0000,borderwidth:2px});

  這段代碼看上去沒有任何問題,但實(shí)際上,在setstyle函數(shù)內(nèi)部使用參數(shù)_style為element.style賦值時(shí),如果element原先已經(jīng)有了一定的樣式,例如曾經(jīng)執(zhí)行過:

element.style.height="20px";

  而_style中卻沒有包括對height的定義,因此element的height樣式就丟失了,不是最初所要的結(jié)果。要解決這個(gè)問題,可以用反射機(jī)制來重寫setstyle函數(shù):

function setstyle(_style){
      //得到要改變樣式的界面對象
      var element=getelement();
      for(var p in _style){
            element.style[p]=_style[p];
      }
}

  程序中遍歷_style的每個(gè)屬性,得到屬性名稱,然后再使用方括號(hào)語法將element.style中的對應(yīng)的屬性賦值為_style中的相應(yīng)屬性的值。從而,element中僅改變指定的樣式,而其他樣式不會(huì)改變,得到了所要的結(jié)果。

商業(yè)源碼熱門下載www.html.org.cn

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 宿迁市| 济源市| 英山县| 蓬安县| 河西区| 西盟| 桐梓县| 上虞市| 会理县| 林甸县| 息烽县| 灯塔市| 南昌县| 泽州县| 临海市| 山东省| 扬州市| 如东县| 光泽县| 塔城市| 临泽县| 凤山市| 大连市| 宝兴县| 马龙县| 琼中| 松滋市| 新余市| 新乡县| 北票市| 西贡区| 喜德县| 武山县| 雅安市| 洛南县| 芷江| 尼木县| 柏乡县| 奎屯市| 灌阳县| 登封市|