关于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 相关文章推荐
jQuery ctrl+Enter shift+Enter实现代码
Feb 07 Javascript
js获取location.href的参数实例代码
Aug 02 Javascript
简介JavaScript中strike()方法的使用
Jun 08 Javascript
jquery操作angularjs对象
Jun 26 Javascript
Javascript的无new构建实例详解
May 15 Javascript
jQuery实现判断控件是否显示的方法
Jan 11 Javascript
Node.js中用D3.js的方法示例
Jan 16 Javascript
一文让你彻底搞清楚javascript中的require、import与export
Sep 24 Javascript
JavaScript实现重力下落与弹性效果的方法分析
Dec 20 Javascript
基于vue.js 2.x的虚拟滚动条的示例代码
Jan 23 Javascript
解决ie11 SCRIPT5011:不能执行已释放Script的代码问题
May 05 Javascript
原生js实现点击按钮复制内容到剪切板
Nov 19 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
ThinkPHP分页类使用详解
2014/03/05 PHP
php使用get_class_methods()函数获取分类的方法
2016/07/20 PHP
php自定义函数转换html标签示例
2016/09/29 PHP
php Session无效分析资料整理
2016/11/29 PHP
PHP数据库操作二:memcache用法分析
2017/08/16 PHP
php记录搜索引擎爬行记录的实现代码
2018/03/02 PHP
Thinkphp5.0 框架的请求方式与响应方式分析
2019/10/14 PHP
上传文件返回的json数据会被提示下载问题解决方案
2014/12/03 Javascript
jQuery中$(function() {});问题详解
2015/08/10 Javascript
详解JavaScript数组的操作大全
2015/10/19 Javascript
JavaScript+CSS无限极分类效果完整实现方法
2015/12/22 Javascript
AngularJS ngModel实现指令与输入直接的数据通信
2016/09/21 Javascript
AngularJS路由切换实现方法分析
2017/03/17 Javascript
JavaScript生成指定范围的时间列表
2018/03/19 Javascript
TypeScript基础入门教程之三重斜线指令详解
2018/10/22 Javascript
Node.js一行代码实现静态文件服务器的方法步骤
2019/05/07 Javascript
DWR内存兼容及无法调用问题解决方案
2020/10/16 Javascript
vue项目查看vue版本及cli版本的实现方式
2020/10/24 Javascript
[03:41]DOTA2上海特锦赛小组赛第三日recap精彩回顾
2016/02/28 DOTA
Python性能优化技巧
2015/03/09 Python
Python实现运行其他程序的四种方式实例分析
2017/08/17 Python
python利用requests库模拟post请求时json的使用教程
2018/12/07 Python
Python实现将字符串的首字母变为大写,其余都变为小写的方法
2019/06/11 Python
对python3 sort sorted 函数的应用详解
2019/06/27 Python
python生成器/yield协程/gevent写简单的图片下载器功能示例
2019/10/28 Python
深入了解如何基于Python读写Kafka
2019/12/31 Python
python实现门限回归方式
2020/02/29 Python
Python Json数据文件操作原理解析
2020/05/09 Python
20行Python代码实现一款永久免费PDF编辑工具的实现
2020/08/27 Python
英国户外玩具儿童游乐设备网站:TP Toys(蹦床、攀爬框架、秋千、滑梯和游戏屋)
2018/04/09 全球购物
财政局长自荐信范文
2013/12/22 职场文书
员工激励培训演讲稿
2014/09/16 职场文书
同学联谊会邀请函
2019/06/24 职场文书
导游词之苏州寒山寺
2019/12/05 职场文书
如何利用map实现Nginx允许多个域名跨域
2021/03/31 Servers
MySQL令人大跌眼镜的隐式转换
2021/08/23 MySQL