显示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 相关文章推荐
如何将一个String和多个String值进行比较思路分析
Apr 22 Javascript
javascript对话框使用方法(警告框 javascript确认框 提示框)
Jan 07 Javascript
javascript 获取HTML DOM父、子、临近节点
Jun 16 Javascript
node.js操作mongoDB数据库示例分享
Nov 26 Javascript
js选项卡的实现方法
Feb 09 Javascript
JavaScript数组迭代器实例分析
Jun 09 Javascript
JS实现六边形3D拖拽翻转效果的方法
Sep 11 Javascript
angularjs中的$eval方法详解
Apr 24 Javascript
详解vue-cli与webpack结合如何处理静态资源
Sep 19 Javascript
vue-cli 首屏加载优化问题
Nov 06 Javascript
使用p5.js临摹动态图片
Nov 04 Javascript
vue实现倒计时功能
Mar 24 Vue.js
半角全角相互转换的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
PHP中创建空文件的代码[file_put_contents vs touch]
2012/01/20 PHP
PHP Global变量定义当前页面的全局变量实现探讨
2013/06/05 PHP
PHP 魔术变量和魔术函数详解
2015/02/25 PHP
discuz论坛更换域名,详细文件修改步骤
2020/12/09 PHP
javascript dom代码应用 简单的相册[firefox only]
2010/06/12 Javascript
Wordpress ThickBox 添加“查看原图”效果代码
2010/12/11 Javascript
javascript生成随机大小写字母的方法
2014/02/20 Javascript
Nodejs学习笔记之Global Objects全局对象
2015/01/13 NodeJs
jQuery实现信息提示框(带有圆角框与动画)效果
2015/08/07 Javascript
javaScript事件机制兼容【详细整理】
2016/07/23 Javascript
浅谈js的异步执行
2016/10/18 Javascript
浅谈JsonObject中的key-value数据解析排序问题
2017/12/06 Javascript
vue裁切预览组件功能的实现步骤
2018/05/04 Javascript
微信小程序后端(java)开发流程的详细步骤
2019/11/13 Javascript
VueJS实现用户管理系统
2020/05/29 Javascript
[01:30]2016国际邀请赛中国区预选赛神秘商店火爆开启
2016/06/26 DOTA
[46:57]EG vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python通过自定义isnumber函数判断字符串是否为数字的方法
2015/04/23 Python
python出现&quot;IndentationError: unexpected indent&quot;错误解决办法
2017/10/15 Python
python学习笔记--将python源文件打包成exe文件(pyinstaller)
2018/05/26 Python
Python将文本去空格并保存到txt文件中的实例
2018/07/24 Python
padas 生成excel 增加sheet表的实例
2018/12/11 Python
Python中出现IndentationError:unindent does not match any outer indentation level错误的解决方法
2020/04/18 Python
Django高级编程之自定义Field实现多语言
2019/07/02 Python
pytorch点乘与叉乘示例讲解
2019/12/27 Python
英国豪华装饰照明品牌的在线零售商:Inspyer Lighting
2019/12/10 全球购物
斯洛伐克最大的婴儿食品和用品网上商店:Feedo.sk
2020/12/21 全球购物
Python面试题:如何用Python来发送邮件
2016/03/15 面试题
环保公益广告语
2014/03/13 职场文书
新品发布会策划方案
2014/06/08 职场文书
聘用意向书
2014/07/29 职场文书
研究生个人学年总结
2015/02/14 职场文书
2015年环境监察工作总结
2015/07/23 职场文书
2015年学校消防安全工作总结
2015/10/14 职场文书
2019年大学毕业生个人自我鉴定范文大全
2019/03/21 职场文书
使用HTML+Css+transform实现3D导航栏的示例代码
2021/03/31 HTML / CSS