关于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 相关文章推荐
一个XML格式数据转换为图表的例子
Feb 09 Javascript
Json对象替换字符串占位符实现代码
Nov 17 Javascript
node.js超时timeout详解
Nov 26 Javascript
浅析Javascript中“==”与“===”的区别
Dec 23 Javascript
JQuery实现展开关闭层的方法
Feb 17 Javascript
JS实现让网页背景图片斜向移动的方法
Feb 25 Javascript
JavaScript使用shift方法移除素组第一个元素实例分析
Apr 06 Javascript
基于bootstrap风格的弹框插件
Dec 28 Javascript
原生js实现弹出层效果
Jan 20 Javascript
JS中使用media实现响应式布局
Aug 04 Javascript
Vue2.0父子组件传递函数的教程详解
Oct 16 Javascript
vue使用rem实现 移动端屏幕适配
Sep 26 Javascript
使用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安装全攻略:APACHE
2006/10/09 PHP
使用PHP批量生成随机用户名
2008/07/10 PHP
使用php验证复选框有效性的示例
2013/11/13 PHP
php面象对象数据库操作类实例
2014/12/02 PHP
PHP foreach遍历多维数组实现方式
2016/11/16 PHP
PHP实现微信退款的方法示例
2019/03/26 PHP
php使用lua+redis实现限流,计数器模式,令牌桶模式
2019/04/04 PHP
PHP 对象继承原理与简单用法示例
2020/04/21 PHP
PHP日期和时间函数的使用示例详解
2020/08/06 PHP
用JavaScript对JSON进行模式匹配 (Part 2 - 实现)
2010/07/17 Javascript
给artDialog 5.02 增加ajax get功能详细介绍
2012/11/13 Javascript
浅析用prototype定义自己的方法
2013/11/14 Javascript
javascript break指定标签打破多层循环示例
2014/01/20 Javascript
Javascript实现简单的富文本编辑器附演示
2014/06/16 Javascript
jquery对象和javascript对象即DOM对象相互转换
2014/08/07 Javascript
JavaScript中使用stopPropagation函数停止事件传播例子
2014/08/27 Javascript
js实现的捐赠管理完整实例
2015/01/20 Javascript
JS弹性运动实现方法分析
2016/12/15 Javascript
Bootstrap CSS组件之输入框组
2016/12/17 Javascript
vue.js指令v-model使用方法
2017/03/20 Javascript
关于layui导航栏不展示下拉列表的解决方法
2019/09/25 Javascript
小程序input数据双向绑定实现方法
2019/10/17 Javascript
VSCode Vue开发推荐插件和VSCode快捷键(小结)
2020/08/08 Javascript
jquery实现淡入淡出轮播图效果
2020/12/13 jQuery
[03:30]DOTA2完美“圣”典精彩集锦
2016/12/27 DOTA
python中字典(Dictionary)用法实例详解
2015/05/30 Python
如何运行带参数的python脚本
2019/11/15 Python
python 爬取古诗文存入mysql数据库的方法
2020/01/08 Python
基于python调用jenkins-cli实现快速发布
2020/08/14 Python
Python实现网络聊天室的示例代码(支持多人聊天与私聊)
2021/01/27 Python
建议书标准格式
2014/03/12 职场文书
幼儿园中班下学期评语
2014/04/18 职场文书
2014年征兵标语
2014/06/20 职场文书
最新农村养殖致富:资金投入较低的创业项目有哪些?
2019/09/26 职场文书
html+css实现环绕倒影加载特效
2021/07/07 HTML / CSS
Python 的演示平台支持 WSGI 接口的应用
2022/04/20 Python