显示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 相关文章推荐
将HTML自动转为JS代码
Jun 26 Javascript
javascript中获取选中对象的类型
Apr 02 Javascript
jquery中通过过滤器获取表单元素的实现代码
Jul 05 Javascript
JS实现随机化快速排序的实例代码
Aug 01 Javascript
js报$ is not a function 的问题的解决方法
Jan 20 Javascript
浅析JS中document对象的一些重要属性
Mar 06 Javascript
jsMind通过鼠标拖拽的方式调整节点位置
Apr 13 Javascript
jQuery.prop() 使用详解
Jul 19 Javascript
jQuery验证插件validate使用方法详解
Sep 13 Javascript
用JS实现图片轮播效果代码(一)
Jun 26 Javascript
详解Vue中使用Axios拦截器
Apr 22 Javascript
简单了解微信小程序 e.target与e.currentTarget的不同
Sep 27 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
神族 PROTOSS 概述
2020/03/14 星际争霸
一个用php实现的获取URL信息的类
2007/01/02 PHP
php sybase_fetch_array使用方法
2014/04/15 PHP
php实现将base64格式图片保存在指定目录的方法
2016/10/13 PHP
PHP获取数据库表中的数据插入新的表再原删除数据方法
2018/10/12 PHP
IE Firefox 使用自定义标签的区别
2009/10/15 Javascript
extJs 常用到的增,删,改,查操作代码
2009/12/28 Javascript
关于图片的预加载过程中隐藏未知的
2012/12/19 Javascript
js下拉框二级关联菜单效果代码具体实现
2013/08/03 Javascript
iframe子页面获取父页面元素的方法
2013/11/05 Javascript
纯js实现重发验证码按钮倒数功能
2015/04/21 Javascript
pace.js页面加载进度条插件
2015/09/29 Javascript
javascript中类的定义方式详解(四种方式)
2015/12/22 Javascript
自己动手制作基于jQuery的Web页面加载进度条插件
2016/06/03 Javascript
JS控制FileUpload的上传文件类型实例代码
2016/10/07 Javascript
jQuery插件FusionCharts绘制的2D双面积图效果示例【附demo源码】
2017/04/11 jQuery
文本溢出插件jquery.dotdotdot.js使用方法详解
2017/06/22 jQuery
JavaScript实现设置默认日期范围为最近40天的方法分析
2017/07/12 Javascript
Vue2.0学习之详解Vue 组件及父子组件通信
2017/12/12 Javascript
基于JavaScript实现瀑布流布局
2018/08/15 Javascript
JS选取DOM元素常见操作方法实例分析
2018/12/10 Javascript
配置一个vue3.0项目的完整步骤
2019/04/26 Javascript
使用uni-app开发微信小程序的实现
2019/12/13 Javascript
jQuery表单校验插件validator使用方法详解
2020/02/18 jQuery
实例讲解React 组件生命周期
2020/07/08 Javascript
[04:11]DOTA2亚洲邀请赛小组赛第一日 TOP10精彩集锦
2015/01/30 DOTA
分析Python的Django框架的运行方式及处理流程
2015/04/08 Python
Python实现简单字典树的方法
2016/04/29 Python
Python 中迭代器与生成器实例详解
2017/03/29 Python
利用PyInstaller将python程序.py转为.exe的方法详解
2017/05/03 Python
pandas 按照特定顺序输出的实现代码
2018/07/10 Python
python手写均值滤波
2020/02/19 Python
中专生求职自荐信范文
2013/12/22 职场文书
项目经理聘任书
2014/03/29 职场文书
Spring Boot 启动、停止、重启、状态脚本
2021/06/26 Java/Android
Mysql 一主多从的部署
2022/05/20 MySQL