显示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 学习书 推荐
Jun 13 Javascript
Javascript 刷新全集常用代码
Nov 22 Javascript
JQuery Tab选项卡效果代码改进版
Apr 01 Javascript
JavaScript 面向对象编程(2) 定义类
May 18 Javascript
js indexOf()定义和用法
Oct 21 Javascript
jQuery常见开发技巧详细整理
Jan 02 Javascript
深入浅析JavaScript中的arguments对象(强力推荐)
Jun 03 Javascript
原生JS实现图片轮播切换效果
Dec 15 Javascript
vue观察模式浅析
Sep 25 Javascript
vue3.0中的双向数据绑定方法及优缺点
Aug 01 Javascript
layui添加动态菜单与选项卡 AJAX请求的例子
Sep 25 Javascript
Layui数据表格之单元格编辑方式
Oct 26 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
php magic_quotes_gpc的一点认识与分析
2008/08/18 PHP
Php-Redis安装测试笔记
2015/03/05 PHP
php获取系统变量方法小结
2015/05/29 PHP
PHP抓取及分析网页的方法详解
2016/04/26 PHP
javaScript call 函数的用法说明
2010/04/09 Javascript
让元素在网页中可拖动示例代码
2013/08/13 Javascript
了不起的node.js读书笔记之mongodb数据库交互
2014/12/22 Javascript
深入理解JavaScript系列(25):设计模式之单例模式详解
2015/03/03 Javascript
js实现点击向下展开的下拉菜单效果代码
2015/09/01 Javascript
深入理解JavaScript定时机制
2016/10/27 Javascript
easyui-combobox 实现简单的自动补全功能示例
2016/11/08 Javascript
jQuery插件HighCharts实现的2D堆条状图效果示例【附demo源码下载】
2017/03/14 Javascript
jQuery实现html table行Tr的复制、删除、计算功能
2017/07/10 jQuery
基于JavaScript实现新增内容滚动播放效果附完整代码
2017/08/24 Javascript
详解vue-cli 接口代理配置
2017/12/13 Javascript
layer.open 按钮的点击事件关闭方法
2018/08/17 Javascript
教你使用vue-cli快速构建的小说阅读器
2019/05/13 Javascript
nuxt框架中对vuex进行模块化设置的实现方法
2019/09/06 Javascript
Element-ui upload上传文件限制的解决方法
2021/01/22 Javascript
[05:26]TI10典藏宝瓶套装外观展示
2020/07/03 DOTA
Python通过递归遍历出集合中所有元素的方法
2015/02/25 Python
对python内置map和six.moves.map的区别详解
2018/12/19 Python
Python实现九宫格式的朋友圈功能内附“马云”朋友圈
2019/05/07 Python
Python SELENIUM上传文件或图片实现过程
2019/10/28 Python
Tensorflow 定义变量,函数,数值计算等名字的更新方式
2020/02/10 Python
python实现简单颜色识别程序
2020/02/19 Python
python GUI库图形界面开发之PyQt5中QMainWindow, QWidget以及QDialog的区别和选择
2020/02/26 Python
Python yield生成器和return对比代码实例
2020/04/20 Python
python模拟哔哩哔哩滑块登入验证的实现
2020/04/24 Python
Python压缩模块zipfile实现原理及用法解析
2020/08/14 Python
Selenium关闭INFO:CONSOLE提示的解决
2020/12/07 Python
Python 中Operator模块的使用
2021/01/30 Python
DOUGLAS荷兰:购买香水和化妆品
2020/10/24 全球购物
外贸采购员岗位职责
2015/04/03 职场文书
2016年安康杯竞赛活动总结
2016/04/05 职场文书
解决Navicat for MySQL 连接 MySQL 报2005错误的问题
2021/05/29 MySQL