显示js对象所有属性和方法的函数


Posted in Javascript onOctober 16, 2009

要想看到实际效果,可以先声明一些属性跟方法,否则是看不到,仔细往下看有例子的。

function ShowObjProperty(Obj) 
{ 
var PropertyList=''; 
var PropertyCount=0; 
for(i in Obj){ 
if(Obj.i !=null) 
PropertyList=PropertyList+i+'属性:'+Obj.i+'\r\n'; 
else 
PropertyList=PropertyList+i+'方法\r\n'; 
} 
alert(PropertyList); 
}
<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("属性 '" + prop + "' 为 " + myObject[prop]); 
document.write(" 
"); 
} 
</script>

今天网上Java Tang博客找到了一个用来遍历JavaScript某个对象所有的属性名称和值的方法,这样想使用方法的时候非常的直观和方便。代码如下:

/* 
* 用来遍历指定对象所有的属性名称和值 
* 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中的相应属性的值。从而,element中仅改变指定的样式,而其他样式不会改变,得到了所要的结果。^-^
Javascript 相关文章推荐
Valerio 发布了 Mootools
Sep 23 Javascript
JS实现图片横向滚动效果示例代码
Sep 04 Javascript
jQuery Ajax使用实例
Apr 16 Javascript
javascript实现相同事件名称,不同命名空间的调用方法
Jun 26 Javascript
javascript给span标签赋值的方法
Nov 26 Javascript
JS表格组件神器bootstrap table详解(基础版)
Dec 08 Javascript
详解Angularjs 如何自定义Img的ng-load 事件
Feb 15 Javascript
AngularJS1.X学习笔记2-数据绑定详解
Apr 01 Javascript
jQuery判断网页是否已经滚动到浏览器底部的实现方法
Oct 27 jQuery
JQuery选中select组件被选中的值方法
Mar 08 jQuery
vue数据控制视图源码解析
Mar 28 Javascript
js canvas实现星空连线背景特效
Nov 01 Javascript
半角全角相互转换的js函数
Oct 16 #Javascript
JavaScript 三种创建对象的方法
Oct 16 #Javascript
JQuery困惑—包装集 DOM节点
Oct 16 #Javascript
JavaScript 对象成员的可见性说明
Oct 16 #Javascript
Javascript 圆角div的实现代码
Oct 15 #Javascript
IE Firefox 使用自定义标签的区别
Oct 15 #Javascript
JavaScript 基础知识 被自己遗忘的
Oct 15 #Javascript
You might like
discuz7 phpMysql操作类
2009/06/21 PHP
深入探讨<br />和 \r\n两者有什么区别??
2013/06/05 PHP
深入for,while,foreach遍历时间比较的详解
2013/06/08 PHP
PHP date函数常用时间处理方法
2015/05/11 PHP
Apache连接PHP后无法启动问题解决思路
2015/06/18 PHP
php 使用html5 XHR2实现上传文件与进度显示功能示例
2020/03/03 PHP
优化网页之快速的呈现我们的网页
2007/06/29 Javascript
Mootools 1.2教程 正则表达式
2009/09/15 Javascript
javascript中[]和{}对象使用介绍
2013/03/20 Javascript
jQuery 遍历-nextUntil()方法以及prevUntil()方法的使用介绍
2013/04/26 Javascript
JavaScript的Module模式编程深入分析
2013/08/13 Javascript
jQuery让控件左右移动的三种实现方法
2013/09/08 Javascript
jQuery判断div随滚动条滚动到一定位置后停止
2014/04/02 Javascript
JavaScript编写点击查看大图的页面半透明遮罩层效果实例
2016/05/09 Javascript
vue自定义指令实现v-tap插件
2016/11/03 Javascript
javascript入门之string对象【新手必看】
2016/11/22 Javascript
vue日期组件 支持vue1.0和2.0
2017/01/09 Javascript
js实现3D图片环展示效果
2017/03/09 Javascript
如何用Node写页面爬虫的工具集
2018/10/26 Javascript
Python数据类型详解(一)字符串
2016/05/08 Python
python爬取w3shcool的JQuery课程并且保存到本地
2017/04/06 Python
Python3多进程 multiprocessing 模块实例详解
2018/06/11 Python
python 实现aes256加密
2020/11/27 Python
Python 调用C++封装的进一步探索交流
2021/03/04 Python
医科学校毕业生自荐信
2013/11/09 职场文书
求职自荐书范文
2013/12/04 职场文书
创业者是否需要商业计划书?
2014/02/07 职场文书
《自选商场》教学反思
2014/02/14 职场文书
终止合同协议书
2014/04/17 职场文书
创先争优公开承诺书
2014/08/30 职场文书
2014年药房工作总结
2014/11/22 职场文书
2015年医德医风工作总结
2015/04/02 职场文书
在 Golang 中实现 Cache::remember 方法详解
2021/03/30 Python
SpringBoot整合阿里云视频点播的过程详解
2021/12/06 Java/Android
【2·13】一图读懂中国无线电发展
2022/02/18 无线电
使用Ajax实现无刷新上传文件
2022/04/12 Javascript