显示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 相关文章推荐
javascript 进阶篇3 Ajax 、JSON、 Prototype介绍
Mar 14 Javascript
javascript 使用 NodeList需要注意的问题
Mar 04 Javascript
jQuery on()方法使用技巧详解
Apr 16 Javascript
理解JavaScript中worker事件api
Dec 25 Javascript
谈谈第三方App接入微信登录 解读
Dec 27 Javascript
JS实现图片点击后出现模态框效果
May 03 Javascript
详解Vue双向数据绑定原理解析
Sep 11 Javascript
Vue项目全局配置微信分享思路详解
May 04 Javascript
VUE预渲染及遇到的坑
Sep 03 Javascript
深入理解 Koa 框架中间件原理
Oct 18 Javascript
通过JavaScript下载文件到本地的方法(单文件)
Mar 17 Javascript
小程序跳转到的H5页面再跳转回跳小程序的方法
Mar 06 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
香妃
2021/03/03 冲泡冲煮
用来解析.htgroup文件的PHP类
2012/09/05 PHP
php实现分页工具类分享
2014/01/09 PHP
Laravel框架路由设置与使用示例
2018/06/12 PHP
新增加的内容是如何将div的scrollbar自动移动最下面
2014/01/02 Javascript
原生javascript实现隔行换色
2015/01/04 Javascript
js实现兼容IE、Firefox的图片缩放代码
2015/12/08 Javascript
详解Bootstrap按钮
2016/01/04 Javascript
js将json格式的对象拼接成复杂的url参数方法
2016/05/25 Javascript
js与applet相互调用的方法
2016/06/22 Javascript
jQuery3.0中的buildFragment私有函数详解
2016/08/16 Javascript
浅谈JS继承_借用构造函数 &amp; 组合式继承
2016/08/16 Javascript
Bootstrap框架的学习教程详解(二)
2016/10/18 Javascript
Javascript实现登录记住用户名和密码功能
2017/03/22 Javascript
nodejs学习笔记之路由
2017/03/27 NodeJs
最新Javascript程序员面试试题和解题方法
2017/11/23 Javascript
解决vue单页路由跳转后scrollTop的问题
2018/09/03 Javascript
vue element-ui el-date-picker限制选择时间为当天之前的代码
2019/11/07 Javascript
JS实现放大镜效果
2020/09/21 Javascript
Python实现PS图像抽象画风效果的方法
2018/01/23 Python
详解Python 装饰器执行顺序迷思
2018/08/08 Python
基于随机梯度下降的矩阵分解推荐算法(python)
2018/08/31 Python
Python搭建代理IP池实现检测IP的方法
2019/10/27 Python
[原创]赚疯了!转手立赚800+?大佬的python「抢茅台脚本」使用教程
2021/01/12 Python
canvas绘制树形结构可视图形的实现
2020/04/03 HTML / CSS
大专生工程监理求职信
2013/10/04 职场文书
专科毕业生学习生活的自我评价
2013/10/26 职场文书
网络公司美工设计工作个人的自我评价
2013/11/03 职场文书
市级优秀班主任事迹材料
2014/05/13 职场文书
大学推普周活动总结
2015/05/07 职场文书
家属联谊会致辞
2015/07/31 职场文书
消防安全培训工作总结
2015/10/23 职场文书
MySQL8.0.24版本Release Note的一些改进点
2021/04/22 MySQL
react合成事件与原生事件的相关理解
2021/05/13 Javascript
详解python的异常捕获
2022/03/03 Python
使用 CSS 构建强大且酷炫的粒子动画效果
2022/08/14 HTML / CSS