关于JavaScript对象的动态选择及遍历对象


Posted in Javascript onMarch 10, 2014

(一)动态选择方法及属性

在实际工作中,我们经常会遇到这种情况:根据某个条件来调用两个方法[1]中的一个,或是在两个属性[2]中的一个上面进行读写操作。下面的代码展示了这种情形:

if (condition) { 
myObj.method1(someArg); 
} else { 
myObj.method2(someArg); 
}

JavaScript提供了一种简单的语法,即使用方括号操作符([])来动态地选择方法和属性。正如下面的代码所示,JavaScript有两种等价的成员访问语法(这个特征在动态语言里很常见):
obj[expressionResultingInMembername] == obj.memberName

如果你曾用整数下标来访问数组中的某个元素,那你已经开始用方括号操作符来进行动态成员选择了。这是因为,数组对象本身就包含以数字下标命名的属性(以及length属性)。不过,JavaScript并不允许你使用点操作符(.)直接访问这些属性,因此myArray.0在语法上是非法的(太遗憾了,这本来是个挺酷的语法)。
为什么方括号操作符比点操作符表示法更强大呢?这是因为你可以在方括号中使用任何代表成员名称的内容来访问对象的成员。这些内容包括字面量、保存着成员名称的变量、名称组合(多数情况下是字符串的拼接)以及用三元操作符(condition ? valueIfTrue : valueIfFalse)实现的快速if/then选择。所有的这些内容都会被处理成一个字符串,然后JavaScript会用这个字符串来寻找对应的成员。
由于JavaScript中的函数本身也是对象,所以它可以像其他值一样被引用。如果一个表达式的结果是函数,你可以直接用括号操作符调用它,就像你直接用函数名称调用函数一样。
需要注意的是,如果你在向方法传递的参数上大量使用此类技巧,混乱的括号有可能会使代码变得难以阅读,此时使用常规的if/else结构更加明智。

(二)JavaScript遍历对象属性和方法

JavaScript 使用 for in 语句来遍历对象的属性和方法。for in 语句循环遍历 JavaScript 对象,每循环一次,都会取得对象的一个属性或方法。

语法:

for(valueName in ObjectName){ 
// 代码 
}

其中,valueName 是变量名,保存着属性或方法的名称,每次循环,valueName 的值都会改变。
Javascript 相关文章推荐
获取服务器传来的数据 用JS去空格的正则表达式
Mar 26 Javascript
js使用onmousemove和onmouseout获取鼠标坐标的方法
Mar 31 Javascript
JavaScript实现网站访问次数统计代码
Aug 12 Javascript
AngularJS入门教程之AngularJS表达式
Apr 18 Javascript
AngularJS指令与控制器之间的交互功能示例
Dec 14 Javascript
jQuery基于xml格式数据实现模糊查询及分页功能的方法
Dec 25 Javascript
javaScript嗅探执行神器-sniffer.js
Feb 14 Javascript
angularjs实现时间轴效果的示例代码
Nov 29 Javascript
详解通过源码解析Node.js中cluster模块的主要功能实现
May 16 Javascript
javascript中toFixed()四舍五入使用方法详解
Sep 28 Javascript
详解 微信小程序开发框架(MINA)
May 17 Javascript
vue实现滚动鼠标滚轮切换页面
Dec 13 Vue.js
使用js操作css实现js改变背景图片示例
Mar 10 #Javascript
红米手机抢购的js代码
Mar 10 #Javascript
按下回车键指向下一个位置的一个函数代码
Mar 10 #Javascript
用js判断输入是否为中文的函数
Mar 10 #Javascript
用IE重起计算机或者关机的示例代码
Mar 10 #Javascript
屏蔽相应键盘按钮操作
Mar 10 #Javascript
JavaScript对IE操作的经典代码(推荐)
Mar 10 #Javascript
You might like
php读取xml实例代码
2010/01/28 PHP
解析在PHP中使用mysqli扩展库对mysql的操作
2013/07/03 PHP
采用ThinkPHP中F方法实现快速缓存实例
2014/06/13 PHP
php自定义apk安装包实例
2014/10/20 PHP
总结PHP中DateTime的常用方法
2016/08/11 PHP
Javascript下判断是否为闰年的Datetime包
2010/10/26 Javascript
JQuery动态给table添加、删除行 改进版
2011/01/19 Javascript
动态加载dtree.js树treeview(示例代码)
2013/12/17 Javascript
js中的caller和callee属性介绍和例子
2014/06/07 Javascript
jQuery实现复选框成对选择及对应取消的方法
2015/03/03 Javascript
jquery实现可自动判断位置的弹出层效果代码
2015/10/12 Javascript
使用Chart.js图表库制作漂亮的响应式表单
2015/10/28 Javascript
jQuery validate验证插件使用详解
2016/05/11 Javascript
轻松掌握JavaScript中介者模式
2016/08/26 Javascript
Javascript实现倒计时(防页面刷新)实例
2016/12/13 Javascript
利用BootStrap的Carousel.js实现轮播图动画效果
2016/12/21 Javascript
一个有意思的鼠标点击文字特效jquery代码
2017/09/23 jQuery
Vue数据驱动表单渲染,轻松搞定form表单
2019/07/19 Javascript
es6 super关键字的理解与应用实例分析
2020/02/15 Javascript
javascript实现支付宝滑块验证码效果
2020/07/24 Javascript
用于统计项目中代码总行数的Python脚本分享
2015/04/21 Python
python从入门到精通(DAY 2)
2015/12/20 Python
python中利用xml.dom模块解析xml的方法教程
2017/05/24 Python
Django1.9 加载通过ImageField上传的图片方法
2018/05/25 Python
在Pandas中处理NaN值的方法
2019/06/25 Python
Flask框架 CSRF 保护实现方法详解
2019/10/30 Python
PyQt5实现画布小程序
2020/05/30 Python
python PyAUtoGUI库实现自动化控制鼠标键盘
2020/09/09 Python
css3实现圆锥渐变conic-gradient效果
2020/02/12 HTML / CSS
个人找工作求职简历的自我评价
2013/10/20 职场文书
园林设计师自荐信
2013/11/18 职场文书
小学中秋节活动方案
2014/02/06 职场文书
2014年商场国庆节活动策划方案
2014/09/16 职场文书
北大自主招生自荐信
2015/03/04 职场文书
2015年度销售个人工作总结
2015/03/31 职场文书
Windows7下FTP搭建图文教程
2022/08/05 Servers