关于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 相关文章推荐
AJAX使用了UpdatePanel后无法使用alert弹出脚本
Apr 02 Javascript
直接在JS里创建JSON数据然后遍历使用
Jul 25 Javascript
javascript的switch用法注意事项分析
Feb 02 Javascript
分享10个原生JavaScript技巧
Apr 20 Javascript
js实现固定显示区域内自动缩放图片的方法
Jul 18 Javascript
基于RequireJS和JQuery的模块化编程——常见问题全面解析
Apr 14 Javascript
sso跨域写cookie的一段js脚本(推荐)
May 25 Javascript
Vue.js系列之vue-router(上)(3)
Jan 03 Javascript
javascript实现一个网页加载进度loading
Jan 04 Javascript
jquery应用实例分享_实现手风琴特效
Feb 01 jQuery
Vue使用vue-recoure + http-proxy-middleware + vuex配合promise实现基本的跨域请求封装
Oct 21 Javascript
谈谈我在vue-cli3中用预渲染遇到的坑
Apr 22 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
四月新番又没了,《Re:从零开始的异世界生活》第二季延期至7月播出
2020/05/06 日漫
PHP 截取字符串专题集合
2010/08/19 PHP
PHP中is_file()函数使用指南
2015/05/08 PHP
PHP实现的数据对象映射模式详解
2019/03/20 PHP
CI框架教程之优化验证码机制详解【验证码辅助函数】
2019/04/16 PHP
Prototype使用指南之range.js
2007/01/10 Javascript
NodeJS的模块写法入门(实例代码)
2012/03/07 NodeJs
JS使用replace()方法和正则表达式进行字符串的搜索与替换实例
2014/04/10 Javascript
JavaScript实现存储HTML字符串示例
2014/04/21 Javascript
jQuery实现Twitter的自动文字补齐特效
2014/11/28 Javascript
jquery实现可自动收缩的TAB网页选项卡代码
2015/09/06 Javascript
jQuery代码性能优化的10种方法
2016/06/21 Javascript
解决OneThink中无法异步提交kindeditor文本框中修改后的内容方法
2017/05/05 Javascript
元素全屏的设置与监听实例
2017/11/28 Javascript
React 使用Hooks简化受控组件的状态绑定
2019/03/18 Javascript
vue的列表交错过渡实现代码示例
2019/05/05 Javascript
微信小程序canvas分享海报功能
2019/10/31 Javascript
微信小程序中插入激励视频广告并获取收益(实例代码)
2019/12/06 Javascript
vue过滤器实现日期格式化的案例分析
2020/07/02 Javascript
[01:20]PWL开团时刻DAY9——听说潮汐没用?
2020/11/10 DOTA
Python实现的简单万年历例子分享
2014/04/25 Python
python模仿网页版微信发送消息功能
2018/02/24 Python
PyQt5每天必学之关闭窗口
2018/04/19 Python
使用Python监控文件内容变化代码实例
2018/06/04 Python
Python3.5 处理文本txt,删除不需要的行方法
2018/12/10 Python
对Django 转发和重定向的实例详解
2019/08/06 Python
python numpy存取文件的方式
2020/04/01 Python
python读取多层嵌套文件夹中的文件实例
2020/02/27 Python
python进度条显示之tqmd模块
2020/08/22 Python
前厅收银主管岗位职责
2014/02/04 职场文书
大足石刻导游词
2015/02/02 职场文书
惹女朋友生气检讨书
2015/05/06 职场文书
刑事附带民事诉讼答辩状
2015/05/22 职场文书
python flask开发的简单基金查询工具
2021/06/02 Python
spring cloud gateway中如何读取请求参数
2021/07/15 Java/Android
用python基于appium模块开发一个自动收取能量的小助手
2021/09/25 Python