首頁 > web前端 > js教程 > 主體

ajax反射機制和遍歷所有物件屬性和值程式碼詳解

伊谢尔伦
發布: 2017-07-21 13:33:57
原創
1317 人瀏覽過

for...in循環的Javascript範例: 

<html>
<head>
<title>一个使用到for...in循环的Javascript示例</title>
</head>
<body>
<script type="text/javascript">
// 创建一个对象 myObject 以及三个属性 sitename, siteurl, sitecontent。
var myObject = new Object();
myObject.sitename = "布啦布啦";
myObject.siteurl = "blabla.cn";
myObject.sitecontent = "网页教程代码图库的中文站点";
//遍历对象的所有属性
for (prop in myObject)
{
document.write("属性 &#39;" + prop + "&#39; 为 " + myObject[prop]);
document.write("<br>");
}
</script>
</body>
</html>
登入後複製
/*
* 用来遍历指定对象所有的属性名称和值
* obj 需要遍历的对象
* author: Jet Mah
*/
function allPrpos ( obj ) {
// 用来保存所有的属性名称和值
var props = "" ;
// 开始遍历
for ( var p in obj ){
// 方法
if ( typeof ( obj [ p ]) == " function " ){
obj [ p ]() ;
} else {
// p 为属性名称,obj[p]为对应属性的值
props += p + " = " + obj [ p ] + " \t " ;
}
}
// 最后显示所有的属性
alert ( props ) ;
}
登入後複製

AJAX的JavaScript的反射機制,反射機制指的是程式在執行時能夠取得自身的資訊。例如一個物件能夠在運行時知道自己有哪些方法和屬性。 在JavaScript中利用for(…in…)語句實現反射,其語法如下:

for(var p in obj){
//语句
}
登入後複製

在Ajax程式設計中,經常要能動態的改變介面元素的樣式,這可以透過物件的style屬性來改變,例如要改變背景色為紅色,可以這樣寫:

element.style.backgroundColor="#ff0000";
登入後複製

基本上CSS裡擁有的屬性在JavaScript中都能夠使用:

function setStyle(_style){
//得到要改变样式的界面对象
var element=getElement();
element.style=_style;
}
登入後複製

直接將整個style物件作為參數傳遞了進來:

var style={
color:#ffffff,
backgroundColor:#ff0000,
borderWidth:2px
}
登入後複製

這時可以這樣呼叫函數:
setStyle(style);

或直接寫為:

setStyle({ color:#ffffff,backgroundColor:#ff0000,borderWidth:2px});
登入後複製

這段程式碼看上去沒有任何問題,但實際上,在setStyle函數內部使用參數_style為element.style賦值時,如果element原先已經有了一定的樣式,例如曾經執行過:
element.style.height="20px" ;

而_style中卻沒有包含height的定義,因此element的height樣式就遺失了,不是最初要的結果。要解決這個問題,可以用反射機制來重寫setStyle函數:

function setStyle(_style){
//得到要改变样式的界面对象
var element=getElement();
for(var p in _style){
element.style[p]=_style[p];
}
}
登入後複製

程式中遍歷_style的每個屬性,得到屬性名稱,然後再使用方括號語法將element.style中的對應的屬性賦值為_style中對應的屬性的

    

#

以上是ajax反射機制和遍歷所有物件屬性和值程式碼詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板