关于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 相关文章推荐
提高网站信任度的技巧
Oct 17 Javascript
Kibo 用于处理键盘事件的Javascript工具库
Oct 28 Javascript
获取客户端网卡MAC地址和IP地址实现JS代码
Mar 17 Javascript
js去字符串前后空格5种实现方法及比较
Apr 03 Javascript
上传图片js判断图片尺寸和格式兼容IE
Sep 01 Javascript
JS实现把鼠标放到链接上出现滚动文字的方法
Apr 06 Javascript
AngularJS 中文API参考手册
Jul 28 Javascript
JavaScript基于自定义函数判断变量类型的实现方法
Nov 23 Javascript
React Native 截屏组件的示例代码
Dec 06 Javascript
浅谈mvvm-simple双向绑定简单实现
Apr 18 Javascript
vue 基于element-ui 分页组件封装的实例代码
Dec 10 Javascript
微信小程序实现吸顶效果
Jan 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命名空间简单用法示例
2018/12/28 PHP
Javascript remove 自定义数组删除方法
2009/10/20 Javascript
用Greasemonkey 脚本收藏网站会员信息到本地
2009/10/26 Javascript
js DOM模型操作
2009/12/28 Javascript
js判断iframe内的网页是否滚动到底部触发事件
2014/03/18 Javascript
使用node+vue.js实现SPA应用
2016/01/28 Javascript
前端弹出对话框 js实现ajax交互
2016/09/09 Javascript
canvas实现动态小球重叠效果
2017/02/06 Javascript
微信小程序 参数传递实例代码
2017/03/20 Javascript
微信JS-SDK选取手机照片上传功能
2017/04/21 Javascript
AngularJS中的路由使用及实现代码
2017/10/09 Javascript
JS抛物线动画实例制作
2018/02/24 Javascript
VUE的history模式下除了index外其他路由404报错解决办法
2019/08/21 Javascript
使用Vue生成动态表单
2019/11/26 Javascript
微信小程序自定义底部弹出框动画
2020/11/18 Javascript
[03:49]辉夜杯现场龙骑士COSER秀情商“我喜欢芬队!”
2015/12/27 DOTA
Python基础之函数用法实例详解
2014/09/10 Python
Python记录详细调用堆栈日志的方法
2015/05/05 Python
使用pycharm生成代码模板的实例
2018/05/23 Python
Python版名片管理系统
2018/11/30 Python
详解python函数的闭包问题(内部函数与外部函数详述)
2019/05/17 Python
解决django 新增加用户信息出现错误的问题
2019/07/28 Python
Python文件名匹配与文件复制的实现
2020/12/11 Python
详解修改Anaconda中的Jupyter Notebook默认工作路径的三种方式
2021/01/24 Python
Travelstart沙特阿拉伯:廉价航班、豪华酒店和实惠的汽车租赁优惠
2019/04/06 全球购物
加州风格的游泳和沙滩装品牌:Cupshe
2019/06/10 全球购物
Unix里面如何在后台运行程序
2016/10/14 面试题
绘画专业自荐信范文
2014/02/23 职场文书
感恩母亲节活动方案
2014/03/04 职场文书
实习护士自荐信
2014/06/21 职场文书
医院科室评语
2015/01/04 职场文书
2015年大学团支部工作总结
2015/05/13 职场文书
MySQL系列之十三 MySQL的复制
2021/07/02 MySQL
Nginx使用Lua模块实现WAF的原理解析
2021/09/04 Servers
python中取整数的几种方法
2021/11/07 Python
vue elementUI批量上传文件
2022/04/26 Vue.js