关于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之Document元素选择器篇
Aug 14 Javascript
JavaScript 面向对象的之私有成员和公开成员
May 04 Javascript
基于JQuery的Pager分页器实现代码
Jul 17 Javascript
JS获得URL超链接的参数值实例代码
Jun 21 Javascript
在Iframe中获取父窗口中表单的值(示例代码)
Nov 22 Javascript
iframe里面的元素触发父窗口元素事件的jquery代码
Oct 19 Javascript
第七章之菜单按钮图标组件
Apr 25 Javascript
vuejs父子组件之间数据交互详解
Aug 09 Javascript
js微信应用场景之微信音乐相册案例分享
Aug 11 Javascript
vue3.0 CLI - 2.3 - 组件 home.vue 中学习指令和绑定
Sep 14 Javascript
Vue请求java服务端并返回数据代码实例
Nov 28 Javascript
javascript设计模式 ? 策略模式原理与用法实例分析
Apr 21 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中文件读、写、删的操作(PHP中对文件和目录操作)
2012/03/06 PHP
php发送get、post请求的6种方法简明总结
2014/07/08 PHP
PHP中soap的用法实例
2014/10/24 PHP
PHP设计模式之模板方法模式定义与用法详解
2018/04/02 PHP
php gethostbyname获取域名ip地址函数详解
2010/01/24 Javascript
jQuery UI AutoComplete 使用说明
2011/06/20 Javascript
利用jquery的获取JS文件中的字符串内容
2012/02/14 Javascript
Node.js中require的工作原理浅析
2014/06/24 Javascript
深入分析JSON编码格式提交表单数据
2015/06/25 Javascript
jQuery实现页面顶部显示的进度条效果完整实例
2015/12/09 Javascript
浅谈javascript运算符——条件,逗号,赋值,()和void运算符
2016/07/15 Javascript
vue组件初学_弹射小球(实例讲解)
2017/09/06 Javascript
前端常见跨域解决方案(全)
2017/09/19 Javascript
JavaScript内存泄漏的处理方式
2017/11/20 Javascript
vue实现的仿淘宝购物车功能详解
2019/01/27 Javascript
koa大型web项目中使用路由装饰器的方法示例
2019/04/02 Javascript
详解jQuery中的getAll()和cleanData()
2019/04/15 jQuery
js实现自动播放匀速轮播图
2020/02/06 Javascript
vue开发简单上传图片功能
2020/06/30 Javascript
js实现网页随机验证码
2020/10/19 Javascript
[02:31]2018年度DOTA2最具人气选手-完美盛典
2018/12/16 DOTA
[40:31]Secret vs Alliacne 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
编写Python脚本使得web页面上的代码高亮显示
2015/04/24 Python
Python实现按当前日期(年、月、日)创建多级目录的方法
2018/04/26 Python
PyCharm搭建Spark开发环境的实现步骤
2019/09/05 Python
Python缓存技术实现过程详解
2019/09/25 Python
SmartBuyGlasses台湾:名牌眼镜,名牌太阳眼镜及隐形眼镜
2017/01/04 全球购物
在C语言中"指针和数组等价"到底是什么意思?
2014/03/24 面试题
HttpServlet类中的主要方法都有哪些?各自的作用是什么?
2014/03/16 面试题
应届生煤化工求职信
2013/10/21 职场文书
升国旗仪式主持词
2014/03/19 职场文书
党员教师四风问题对照检查材料
2014/09/26 职场文书
公安领导班子四风问题个人整改措施思想汇报
2014/10/09 职场文书
幼儿园六一儿童节主持词
2015/06/30 职场文书
公司环境卫生管理制度
2015/08/05 职场文书
Golang 遍历二叉树
2022/04/19 Golang