关于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 相关文章推荐
node.js中的buffer.Buffer.isBuffer方法使用说明
Dec 14 Javascript
jquery中checkbox使用方法简单实例演示
Nov 24 Javascript
js+flash实现的5图变换效果广告代码(附演示与demo源码下载)
Apr 01 Javascript
JavaScript如何实现跨域请求
Aug 05 Javascript
AngularJS $http模块POST请求实现
Apr 08 Javascript
页面间固定参数,通过cookie传值的实现方法
May 31 Javascript
js实现图片旋转 js滚动鼠标中间对图片放大缩小
Jul 05 Javascript
extjs简介_动力节点Java学院整理
Jul 17 Javascript
Node.js成为Web应用开发最佳选择的原因
Feb 05 Javascript
详解webpack 打包文件体积过大解决方案(code splitting)
Apr 10 Javascript
使用Vue开发自己的Chrome扩展程序过程详解
Jun 21 Javascript
关于JSON解析的实现过程解析
Oct 08 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工厂模式的日常使用
2019/03/20 PHP
JavaScript 入门·JavaScript 具有全范围的运算符
2007/10/01 Javascript
Jquery使用Firefox FireBug插件调试Ajax步骤讲解
2013/12/02 Javascript
javascript异步编程代码书写规范Promise学习笔记
2015/02/11 Javascript
使用AngularJS中的SCE来防止XSS攻击的方法
2015/06/18 Javascript
浅析JavaScript声明变量
2015/12/21 Javascript
JS获取一个未知DIV高度的方法
2016/08/09 Javascript
针对后台列表table拖拽比较实用的jquery拖动排序
2016/10/10 Javascript
jacascript DOM节点——元素节点、属性节点、文本节点
2017/04/18 Javascript
nodejs密码加密中生成随机数的实例代码
2017/07/17 NodeJs
JS二分查找算法详解
2017/11/01 Javascript
bootstrap table插件动态加载表头
2019/07/19 Javascript
微信小程序停止其他视频播放当前视频的实例代码
2019/12/25 Javascript
VUE页面中通过双击实现复制表格中内容的示例代码
2020/06/11 Javascript
vue项目中js-cookie的使用存储token操作
2020/11/13 Javascript
可拖拽组件slider.js使用方法详解
2020/12/04 Javascript
python 数据加密代码
2008/12/24 Python
python网络爬虫之如何伪装逃过反爬虫程序的方法
2017/11/23 Python
python如何在列表、字典中筛选数据
2018/03/19 Python
pyhton列表转换为数组的实例
2018/04/04 Python
Python实现购物车购物小程序
2018/04/18 Python
Django框架实现的普通登录案例【使用POST方法】
2019/05/15 Python
使用python模拟高斯分布例子
2019/12/09 Python
Python爬取股票信息,并可视化数据的示例
2020/09/26 Python
如何创建一个Flask项目并进行简单配置
2020/11/18 Python
资生堂英国官网:Shiseido英国
2020/12/30 全球购物
你经历的项目中的SCM配置项主要有哪些?什么是配置项?
2013/11/04 面试题
实习生个人的自我评价
2013/12/08 职场文书
开工庆典邀请函范文
2014/01/16 职场文书
三分钟英语演讲稿
2014/04/24 职场文书
乡镇创先争优活动总结
2014/08/28 职场文书
2015年房地产个人工作总结
2015/05/26 职场文书
欠条范文
2015/07/03 职场文书
小学毕业感言200字
2015/07/30 职场文书
关于flex 上下文中自动 margin的问题(完整例子)
2021/05/20 HTML / CSS
总结Python常用的魔法方法
2021/05/25 Python