显示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 相关文章推荐
js触发asp.net的Button的Onclick事件应用
Feb 02 Javascript
PhantomJS快速入门教程(服务器端的 JavaScript API 的 WebKit)
Aug 06 Javascript
基于JavaScript实现点击页面任何位置返回
Aug 31 Javascript
jQuery EasyUI常用数据验证汇总
Sep 18 Javascript
jquery.Jcrop结合JAVA后台实现图片裁剪上传实例
Nov 05 Javascript
谈谈JavaScript数组常用方法总结
Jan 24 Javascript
jQuery实现在新增加的元素上添加事件方法案例分析
Feb 09 Javascript
node操作mysql数据库实例详解
Mar 17 Javascript
关于vue v-for 循环问题(一行显示四个,每一行的最右边那个计算属性)
Sep 04 Javascript
JS面向对象编程基础篇(二) 封装操作实例详解
Mar 03 Javascript
解决qrcode.js生成二维码时必须定义一个空div的问题
Jul 09 Javascript
vue实现防抖的实例代码
Jan 11 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 关于访问控制的和运算符优先级介绍
2013/07/08 PHP
析构函数与php的垃圾回收机制详解
2013/10/28 PHP
浅谈php自定义错误日志
2015/02/13 PHP
浅谈PHP安全防护之Web攻击
2017/01/03 PHP
PHP-CGI远程代码执行漏洞分析与防范
2017/05/07 PHP
PHP获取当前系统时间的方法小结
2018/10/03 PHP
jquery实现带复选框的表格行选中删除时高亮显示
2013/08/01 Javascript
jQuery简单实现验证邮箱格式
2015/07/15 Javascript
js实现按钮颜色渐变动画效果
2015/08/20 Javascript
浅谈Javascript中substr和substring的区别
2015/09/30 Javascript
javascript实现tab切换特效
2015/11/12 Javascript
静态页面html中跳转传值的JS处理技巧
2016/06/22 Javascript
解析JavaScript数组方法reduce
2016/12/12 Javascript
jQuery表单插件ajaxForm实例详解
2017/01/17 Javascript
NodeJS基础API搭建服务器详细过程记录
2017/04/01 NodeJs
vue增删改查的简单操作
2017/07/15 Javascript
vue实现树形菜单效果
2018/03/19 Javascript
electron中使用bootstrap的示例代码
2018/11/06 Javascript
js实现多个倒计时并行 js拼团倒计时
2019/02/25 Javascript
vue-openlayers实现地图坐标弹框效果
2020/09/24 Javascript
[34:41]夜魇凡尔赛茶话会 第二期02:你画我猜
2021/03/11 DOTA
django1.11.1 models 数据库同步方法
2018/05/30 Python
Python设计模式之模板方法模式实例详解
2019/01/17 Python
Python实现统计英文文章词频的方法分析
2019/01/28 Python
详解用python写网络爬虫-爬取新浪微博评论
2019/05/10 Python
CSS3 新增选择器的实例
2019/11/13 HTML / CSS
YOINS官网:时尚女装网上购物
2017/03/17 全球购物
英国和国际包裹递送:ParcelCompare
2019/08/26 全球购物
Java servlet面试题
2012/03/04 面试题
2014年计算机专业个人自我评价
2014/01/19 职场文书
感恩节活动方案
2014/01/27 职场文书
同事吵架检讨书
2014/02/05 职场文书
电子银行营销方案
2014/02/22 职场文书
2015应届毕业生求职信范文
2015/03/20 职场文书
楚门的世界观后感
2015/06/03 职场文书
房地产置业顾问工作总结
2015/10/23 职场文书