关于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 相关文章推荐
web css实现整站样式互相切换
Oct 29 Javascript
多个checkbox被选中时如何判断是否有自己想要的
Sep 22 Javascript
jQuery实现ToolTip元素定位显示功能示例
Nov 23 Javascript
解决微信内置浏览器返回上一页强制刷新问题方法
Feb 05 Javascript
JavaScript实现动态添加Form表单元素的方法示例
Aug 14 Javascript
简单的网页广告特效实例
Aug 19 Javascript
js处理包含中文的字符串实例
Oct 11 Javascript
解析Vue2 dist 目录下各个文件的区别
Nov 22 Javascript
基于vue 实现token验证的实例代码
Dec 14 Javascript
vue实现element-ui对话框可拖拽功能
Aug 17 Javascript
Vue实现美团app的影院推荐选座功能【推荐】
Aug 29 Javascript
jQuery HTML获取内容和属性操作实例分析
May 20 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常用函数小技巧
2008/09/11 PHP
php简单图像创建入门实例
2015/06/10 PHP
php对接java现实加签验签的实例
2016/11/25 PHP
小程序微信支付功能配置方法示例详解【基于thinkPHP】
2019/05/05 PHP
Javascript写了一个清除“logo1_.exe”的杀毒工具(可扫描目录)
2007/02/09 Javascript
小议Javascript中的this指针
2010/03/18 Javascript
获取dom元素那些讨厌的位置封装代码
2010/06/23 Javascript
写了10年的Javascript也未必全了解的连续赋值运算
2011/03/25 Javascript
jquery一般方法介绍 入门参考
2011/06/21 Javascript
给事件响应函数传参数的四种方式小结
2013/12/05 Javascript
Jquery 获取对象的几种方式介绍
2014/01/17 Javascript
javascript中基本类型和引用类型的区别分析
2015/05/12 Javascript
javascript的BOM汇总
2015/07/16 Javascript
js实现多图左右切换功能
2016/08/04 Javascript
jQuery ui autocomplete选择列表被Bootstrap模态窗遮挡的完美解决方法
2016/09/23 Javascript
BootStrap实现带关闭按钮功能
2017/02/15 Javascript
AngularJS中使用ngModal模态框实例
2017/05/27 Javascript
JS实现求数组起始项到终止项之和的方法【基于数组扩展函数】
2017/06/13 Javascript
Vue列表页渲染优化详解
2017/07/24 Javascript
简单实现jQuery手风琴效果
2017/08/18 jQuery
使用JS和canvas实现gif动图的停止和播放代码
2017/09/01 Javascript
深入理解JavaScript 箭头函数
2019/05/30 Javascript
刷新页面后让控制台的js代码继续执行
2019/09/20 Javascript
微信小程序 轮播图实现原理及优化详解
2019/09/29 Javascript
laravel实现中文和英语互相切换的例子
2019/09/30 Javascript
微信小程序自定义弹出层效果
2020/05/26 Javascript
vue-cli4项目开启eslint保存时自动格式问题
2020/07/13 Javascript
Linux下python制作名片示例
2018/07/20 Python
python 搭建简单的http server,可直接post文件的实例
2019/01/03 Python
你的自行车健身专家:FaFit24
2016/11/16 全球购物
Watch Station官方网站:世界一流的手表和智能手表
2020/01/05 全球购物
酒店服务实习自我鉴定
2013/09/22 职场文书
家长评语大全
2014/01/22 职场文书
空气环保标语
2014/06/12 职场文书
学习雷锋主题班会
2015/08/14 职场文书
Java获取字符串编码格式实现思路
2022/09/23 Java/Android