关于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 21 Javascript
javascript 表格内容排序 简单操作示例代码
Jan 03 Javascript
控制台报错object is not a function的解决方法
Aug 24 Javascript
javascript截取字符串小结
Apr 28 Javascript
jQuery实现二级下拉菜单效果
Jan 05 Javascript
原生js仿jquery实现对Ajax的封装
Oct 04 Javascript
es7学习教程之Decorators(修饰器)详解
Jul 21 Javascript
原生JS实现DOM加载完成马上执行JS代码的方法
Sep 07 Javascript
在webstorm开发微信小程序之使用阿里自定义字体图标的方法
Nov 15 Javascript
Async/Await替代Promise的6个理由
Jun 15 Javascript
jQuery实现滑动星星评分效果(每日分享)
Nov 13 jQuery
jQuery单页面文字搜索插件jquery.fullsearch.js的使用方法
Feb 04 jQuery
使用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
操作Oracle的php类
2006/10/09 PHP
PHP 5.3 下载时 VC9、VC6、Thread Safe、Non Thread Safe的区别分析
2011/03/28 PHP
php array的学习笔记
2012/05/16 PHP
php和js如何通过json互相传递数据相关问题探讨
2013/02/26 PHP
php实现的太平洋时间和北京时间互转的自定义函数分享
2014/08/19 PHP
JSON 和 JavaScript eval使用说明
2010/06/13 Javascript
基于JQUERY的多级联动代码
2012/01/24 Javascript
游览器中javascript的执行过程(图文)
2012/05/20 Javascript
jquery ajax 局部刷新小案例
2014/02/08 Javascript
javascript的动态加载、缓存、更新以及复用(一)
2014/06/09 Javascript
Vue.js实现实例搜索应用功能详细代码
2017/08/24 Javascript
JavaScript实现HTML5游戏断线自动重连的方法
2017/09/18 Javascript
js最简单的双向绑定实例讲解
2018/01/02 Javascript
js+canvas实现滑动拼图验证码功能
2018/03/26 Javascript
JS实现生成由字母与数字组合的随机字符串功能详解
2018/05/25 Javascript
JavaScript基于对象方法实现数组去重及排序操作示例
2018/07/10 Javascript
vue实现页面内容禁止选中功能,仅输入框和文本域可选
2019/11/09 Javascript
JavaScript复制变量三种方法实例详解
2020/01/09 Javascript
[18:32]DOTA2 HEROS教学视频教你分分钟做大人-谜团
2014/06/12 DOTA
Windows下Python2与Python3两个版本共存的方法详解
2017/02/12 Python
详解python多线程、锁、event事件机制的简单使用
2018/04/27 Python
python求最大连续子数组的和
2018/07/07 Python
pyqt5中QThread在使用时出现重复emit的实例
2019/06/21 Python
python简单实现矩阵的乘,加,转置和逆运算示例
2019/07/10 Python
Python爬虫Scrapy框架CrawlSpider原理及使用案例
2020/11/20 Python
Python批量修改xml的坐标值全部转为整数的实例代码
2020/11/26 Python
详解python的变量缓存机制
2021/01/24 Python
Geekbuying波兰:购买中国电子产品
2019/10/20 全球购物
在Ajax应用中信息是如何在浏览器和服务器之间传递的
2016/05/31 面试题
工业自动化专业自荐信范文
2014/04/10 职场文书
2014领导班子“四风问题”对照检查材料思想汇报(执法局)
2014/09/21 职场文书
课外活动实习计划
2015/01/19 职场文书
初婚未育证明样本
2015/06/18 职场文书
《社戏》教学反思
2016/02/22 职场文书
Go语言实现一个简单的并发聊天室的项目实战
2022/03/18 Golang
python中数组和列表的简单实例
2022/03/25 Python