关于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 相关文章推荐
Firebug入门指南(Firefox浏览器)
Aug 21 Javascript
JS中Iframe之间传值及子页面与父页面应用
Mar 11 Javascript
jsp+javascript打造级连菜单的实例代码
Jun 14 Javascript
js检查页面上有无重复id的实现代码
Jul 17 Javascript
JS模拟实现方法重载示例
Aug 03 Javascript
js实现砖头在页面拖拉效果
Nov 20 Javascript
JavaScript中在光标处插入添加文本标签节点的详细方法
Mar 22 Javascript
JS复杂判断的更优雅写法代码详解
Nov 07 Javascript
JS数组求和的常用方法实例小结
Jan 07 Javascript
Async/Await替代Promise的6个理由
Jun 15 Javascript
vue内置组件component--通过is属性动态渲染组件操作
Jul 28 Javascript
js实现上传图片到服务器
Apr 11 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下利用header()函数设置浏览器缓存的代码
2010/09/01 PHP
解析阿里云ubuntu12.04环境下配置Apache+PHP+PHPmyadmin+MYsql
2013/06/26 PHP
php获取当前时间的毫秒数的方法
2014/01/26 PHP
Yii框架日志记录Logging操作示例
2018/07/12 PHP
PHP实现文件上传后台处理脚本
2020/03/04 PHP
Jquery优化效率 提升性能解决方案
2010/09/06 Javascript
JScript分割字符串示例代码
2013/09/04 Javascript
JavaScript1.6数组新特性介绍以及JQuery的几个工具方法
2013/12/06 Javascript
javascript框架设计读书笔记之字符串的扩展和修复
2014/12/02 Javascript
Js制作点击输入框时默认文字消失的效果
2015/09/05 Javascript
JavaScript构造函数详解
2015/12/27 Javascript
JavaScript实现打开链接页面的方式汇总
2016/06/02 Javascript
vue-hook-form使用详解
2017/04/07 Javascript
SpringMVC简单整合Angular2的示例
2017/07/31 Javascript
Angular4编程之表单响应功能示例
2017/12/13 Javascript
vue-cli2打包前和打包后的css前缀不一致的问题解决
2018/08/24 Javascript
详解小程序开发经验:多页面数据同步
2019/05/18 Javascript
小程序Scroll-view上拉滚动刷新数据
2020/06/21 Javascript
python服务器端收发请求的实现代码
2014/09/29 Python
python读写ini配置文件方法实例分析
2015/06/30 Python
Python实现中文数字转换为阿拉伯数字的方法示例
2017/05/26 Python
python里使用正则表达式的组嵌套实例详解
2017/10/24 Python
Python之Class&Object用法详解
2019/12/25 Python
如何将PySpark导入Python的放实现(2种)
2020/04/26 Python
Python爬虫防封ip的一些技巧
2020/08/06 Python
python实现图片转换成素描和漫画格式
2020/08/19 Python
如何创建一个Flask项目并进行简单配置
2020/11/18 Python
丝芙兰美国官网:SEPHORA美国
2016/08/03 全球购物
JBL澳大利亚官方商店:扬声器、耳机和音响系统
2018/05/24 全球购物
Gap英国官网:Gap UK
2018/07/18 全球购物
加拿大的标志性百货公司:Hudson’s Bay(哈得逊湾)
2019/09/03 全球购物
音乐系毕业生自荐信
2013/10/27 职场文书
新闻记者个人求职的自我评价
2013/11/28 职场文书
大三学生学年自我鉴定
2014/09/12 职场文书
餐厅保洁员岗位职责
2015/04/10 职场文书
mysql 排序失效
2022/05/20 MySQL