关于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对table中各数据的增加、保存、删除操作示例
May 14 Javascript
编写简单的jQuery提示插件
Dec 21 Javascript
jQuery实现form表单基于ajax无刷新提交方法详解
Dec 08 Javascript
纯JS代码实现气泡效果
May 04 Javascript
微信小程序 教程之模块化
Oct 17 Javascript
JS瀑布流实现方法实例分析
Dec 19 Javascript
EasyUI创建人员树的实例代码
Sep 15 Javascript
vue-rx的初步使用教程
Sep 21 Javascript
express + jwt + postMan验证实现持久化登录
Jun 05 Javascript
layui form.render('select', 'test2') 更新渲染的方法
Sep 27 Javascript
Vue实现返回顶部按钮实例代码
Oct 21 Javascript
ES6中的Javascript解构的实现
Oct 30 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 Http_Template_IT类库进行模板替换
2009/03/19 PHP
php 中文字符入库或显示乱码问题的解决方法
2010/04/12 PHP
如何使用php输出时间格式
2013/08/31 PHP
PHP代码优化技巧小结
2015/09/29 PHP
Thinkphp实现自动验证和自动完成
2015/12/19 PHP
php加速缓存器opcache,apc,xcache,eAccelerator原理与配置方法实例分析
2020/03/02 PHP
Jquery.TreeView结合ASP.Net和数据库生成菜单导航条
2010/08/27 Javascript
dreamweaver 安装Jquery智能提示
2011/04/02 Javascript
javascript使用avalon绑定实现checkbox全选
2015/05/06 Javascript
JS中Location使用详解
2015/05/12 Javascript
BootStrap table表格插件自适应固定表头(超好用)
2016/08/24 Javascript
vue.js中proxyTable 转发请求的实现方法
2018/09/20 Javascript
JavaScript实现连连看连线算法
2019/01/05 Javascript
python虚拟环境 virtualenv的简单使用
2020/01/21 Javascript
深入理解webpack process.env.NODE_ENV配置
2020/02/23 Javascript
python使用clear方法清除字典内全部数据实例
2015/07/11 Python
Python图形绘制操作之正弦曲线实现方法分析
2017/12/25 Python
详解利用django中间件django.middleware.csrf.CsrfViewMiddleware防止csrf攻击
2018/10/09 Python
对python numpy.array插入一行或一列的方法详解
2019/01/29 Python
Python中Numpy mat的使用详解
2019/05/24 Python
Python flask框架实现浏览器点击自定义跳转页面
2020/06/04 Python
新手常见Python错误及异常解决处理方案
2020/06/18 Python
python3中编码获取网页的实例方法
2020/11/16 Python
Python使用paramiko连接远程服务器执行Shell命令的实现
2021/03/04 Python
简单几步用纯CSS3实现3D翻转效果
2019/01/17 HTML / CSS
蒂芙尼澳大利亚官方网站:Tiffany&Co. Australia
2017/08/27 全球购物
美国转售二手商品的电子商务平台:BLINQ
2018/12/13 全球购物
挖掘机司机岗位职责
2014/02/12 职场文书
军训考核自我鉴定
2014/02/13 职场文书
就职演讲稿范文
2014/05/19 职场文书
车辆工程专业求职信
2014/06/14 职场文书
领导班子四风对照检查材料思想汇报
2014/09/26 职场文书
2014年六五普法工作总结
2014/11/25 职场文书
小学班主任心得体会
2016/01/07 职场文书
MyBatis-Plus 批量插入数据的操作方法
2021/09/25 Java/Android
Mybatis-Plus 使用 @TableField 自动填充日期
2022/04/26 Java/Android