关于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事件 delegate()使用方法介绍
Oct 30 Javascript
javascript中的parseInt和parseFloat区别
Jul 12 Javascript
JS+css 图片自动缩放自适应大小
Aug 08 Javascript
时间戳转换为时间 年月日时间的JS函数
Aug 19 Javascript
php读取sqlite数据库入门实例代码
Jun 25 Javascript
使用AmplifyJS组件配合JavaScript进行编程的指南
Jul 28 Javascript
JavaScript仿flash遮罩动画效果
Jun 15 Javascript
JavaScript将base64图片转换成formData并通过AJAX提交的实现方法
Oct 24 Javascript
Bootstrap免费字体和图标网站(值得收藏)
Mar 16 Javascript
vue学习笔记之指令v-text && v-html && v-bind详解
May 12 Javascript
详解Node.js中path模块的resolve()和join()方法的区别
Oct 29 Javascript
jQuery zTree插件使用简单教程
Aug 16 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
PHP分页函数代码(简单实用型)
2010/12/02 PHP
php字符串分割函数explode的实例代码
2013/02/07 PHP
destoon实现首页显示供应、企业、资讯条数的方法
2014/07/15 PHP
Windows2003下php5.4安装配置教程(IIS)
2016/06/30 PHP
PDO::getAvailableDrivers讲解
2019/01/28 PHP
JavaScript 事件查询综合
2009/07/13 Javascript
javascript 数组排序函数
2009/08/20 Javascript
DOM 脚本编程中的兄弟节点
2009/10/31 Javascript
jQuery的初始化与对象构建之浅析
2011/04/12 Javascript
jquery下jstree简单应用 - v1.0
2011/04/14 Javascript
jQuery实现输入框邮箱内容自动补全与上下翻动显示效果【附demo源码下载】
2016/09/20 Javascript
AngularJs ng-repeat 嵌套如何获取外层$index
2016/09/21 Javascript
javascript 闭包详解及简单实例应用
2016/12/31 Javascript
Angular.js中angular-ui-router的简单实践
2017/07/18 Javascript
JavaScript中Hoisting详解 (变量提升与函数声明提升)
2017/08/18 Javascript
Angularjs实现控制器之间通信方式实例总结
2018/03/27 Javascript
动态加载JavaScript文件的3种方式
2018/05/05 Javascript
vue实现页面切换滑动效果
2020/06/29 Javascript
基于Electron实现桌面应用开发代码实例
2020/07/07 Javascript
详解Python3.6的py文件打包生成exe
2018/07/13 Python
Linux下python制作名片示例
2018/07/20 Python
用Python编写一个简单的CS架构后门的方法
2018/11/20 Python
python实现多进程通信实例分析
2019/09/01 Python
Tensorflow实现在训练好的模型上进行测试
2020/01/20 Python
python实现串口通信的示例代码
2020/02/10 Python
python实现全排列代码(回溯、深度优先搜索)
2020/02/26 Python
html5 localStorage本地存储_动力节点Java学院整理
2017/07/06 HTML / CSS
HTML5 weui使用笔记
2019/11/21 HTML / CSS
大学毕业登记表自我鉴定
2013/10/09 职场文书
教师绩效考核方案
2014/01/21 职场文书
2014年团支部年度工作总结
2014/12/24 职场文书
英语邀请函范文
2015/02/02 职场文书
化工厂员工工作总结
2015/10/15 职场文书
python实现批量提取指定文件夹下同类型文件
2021/04/05 Python
python第三方网页解析器 lxml 扩展库与 xpath 的使用方法
2021/04/06 Python
PHP使用QR Code生成二维码实例
2021/07/07 PHP