关于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 相关文章推荐
javascript获取浏览器类型和版本的方法(js获取浏览器版本)
Mar 13 Javascript
node.js入门教程
Jun 01 Javascript
JS实现的简单鼠标跟随DiV层效果完整实例
Oct 31 Javascript
浅谈使用MVC模式进行JavaScript程序开发
Nov 10 Javascript
js操作table元素实现表格行列新增、删除技巧总结
Nov 18 Javascript
学习JavaScript事件流和事件处理程序
Jan 25 Javascript
Angularjs结合Bootstrap制作的一个TODO List
Aug 18 Javascript
JavaScript实现清空(重置)文件类型INPUT元素值的方法
Nov 17 Javascript
node前端模板引擎Jade之标签的基本写法
May 11 Javascript
实现高性能javascript的注意事项
May 27 Javascript
vue仿淘宝滑动验证码功能(样式模仿)
Dec 10 Javascript
在Vue中使用Echarts实例图的方法实例
Oct 10 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
从一个不错的留言本弄的mysql数据库操作类
2007/09/02 PHP
php 删除无限级目录与文件代码共享
2008/11/22 PHP
PHP实现一个简单url路由功能实例
2016/11/05 PHP
php 实现简单的登录功能示例【基于thinkPHP框架】
2019/12/02 PHP
jquery 图片 上一张 下一张 链接效果(续篇)
2010/04/20 Javascript
基于Jquery的动态创建DOM元素的代码
2010/12/28 Javascript
自己写的Javascript计算时间差函数
2013/10/28 Javascript
node.js解决获取图片真实文件类型的问题
2014/12/20 Javascript
jquery点击切换背景色的简单实例
2016/08/25 Javascript
详解用原生JavaScript实现jQuery的某些简单功能
2016/12/19 Javascript
Node.js制作简单聊天室
2017/01/12 Javascript
Jquery与Bootstrap实现后台管理页面增删改查功能示例
2017/01/22 Javascript
JS实现异步上传压缩图片
2017/04/22 Javascript
分析javascript中9 个常见错误阻碍你进步
2017/09/18 Javascript
JS实现图片居中悬浮效果
2017/12/25 Javascript
vue中实现图片和文件上传的示例代码
2018/03/16 Javascript
vue微信分享出来的链接点开是首页问题的解决方法
2018/11/28 Javascript
JS闭包经典实例详解
2018/12/20 Javascript
javascript数组常见操作方法实例总结【连接、添加、删除、去重、排序等】
2019/06/13 Javascript
用原生JS实现爱奇艺首页导航栏代码实例
2019/09/19 Javascript
微信小程序 wx.getUserInfo引导用户授权问题实例分析
2020/03/09 Javascript
Python二分查找详解
2015/09/13 Python
Python的爬虫包Beautiful Soup中用正则表达式来搜索
2016/01/20 Python
Python编写Windows Service服务程序
2018/01/04 Python
python实现一个简单的并查集的示例代码
2018/03/19 Python
Python 使用 PyMysql、DBUtils 创建连接池提升性能
2019/08/14 Python
selenium+python配置chrome浏览器的选项的实现
2020/03/18 Python
python框架flask入门之路由及简单实现方法
2020/06/07 Python
python如何编写类似nmap的扫描工具
2020/11/06 Python
html5 Canvas画图教程(1)—画图的基本常识
2013/01/09 HTML / CSS
HTML5拖放API实现自动生成相框功能
2020/04/07 HTML / CSS
应届毕业生的自我鉴定
2013/11/13 职场文书
会议接待欢迎词
2014/01/12 职场文书
服务质量承诺书
2014/03/27 职场文书
遗愿清单观后感
2015/06/09 职场文书
Nginx如何配置Http、Https、WS、WSS的方法步骤
2021/05/11 Servers