激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - ASP.NET教程 - AJAX JavaScript反射機(jī)制的介紹

AJAX JavaScript反射機(jī)制的介紹

2019-10-27 11:14asp.net教程網(wǎng) ASP.NET教程

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

什么是反射機(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è)變量,用以存儲對象obj的屬性(方法)名稱,有了對象名和屬性(方法)名,就可以使用方括號語法來調(diào)用一個(gè)對象的屬性(方法): 

復(fù)制代碼代碼如下:

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): 

復(fù)制代碼代碼如下:

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


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

復(fù)制代碼代碼如下:

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ù): 

復(fù)制代碼代碼如下:

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

}


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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美一区二区三区不卡免费观看 | 97超碰资源站 | 91在线视频免费观看 | 一区在线不卡 | 日本欧美一区二区三区在线播 | 国产精品成人一区二区三区电影毛片 | 精品欧美一区二区精品久久 | 日韩视频一二区 | 在线免费观看毛片视频 | 中文字幕电影免费播放 | 亚洲欧美日韩免费 | 国产免费观看一区二区三区 | 日韩精品中文字幕一区二区三区 | 久久99精品久久久久久国产越南 | 精品久久久久久久久久久αⅴ | 久久久日韩精品一区二区 | 国产伦精品一区二区三区在线 | 免费看黄色一级片 | 久久亚洲精品久久国产一区二区 | xxxxhd18hd日本hd | 亚洲欧美国产精品va在线观看 | 在线看毛片的网站 | 91 在线免费观看 | 真人一级毛片免费 | 国产做爰 | 久久久在线免费观看 | 99精品视频在线导航 | 精品1 | 国产免费传媒av片在线 | 久热久操 | 美女扒开胸罩给男生看视频 | 久久免费视频一区 | 91专区在线观看 | 久久在线精品 | 性片网站 | 亚洲日本欧美 | 日韩午夜一区二区三区 | 久久久www视频 | 91麻豆精品国产91久久久更新资源速度超快 | 九色国产| 妇子乱av一区二区三区 |