关于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 技巧小结
Apr 02 Javascript
简易js代码实现计算器操作
Apr 15 Javascript
JS替换字符串中空格方法
Apr 17 Javascript
jquery插件EasyUI中form表单提交实例分享
Jan 11 Javascript
如何使用jquery实现文字上下滚动效果
Oct 12 Javascript
微信小程序 选项卡的简单实例
May 24 Javascript
基于Vue2的独立构建与运行时构建的差别(详解)
Dec 06 Javascript
基于JavaScript中标识符的命名规则介绍
Jan 06 Javascript
jquery+css实现Tab栏切换的代码实例
May 14 jQuery
redux.js详解及基本使用
May 24 Javascript
从0到1学习JavaScript编写贪吃蛇游戏
Jul 28 Javascript
解决vscode进行vue格式化,会自动补分号和双引号的问题
Oct 26 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针对数字的加密解密类
2014/03/20 PHP
YII路径的用法总结
2014/07/09 PHP
php给一组指定关键词添加span标签的方法
2015/03/31 PHP
PHP常用函数之获取汉字首字母功能示例
2019/10/21 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
2020/02/27 PHP
JS图像无缝滚动脚本非常好用
2014/02/10 Javascript
详解Javascript事件驱动编程
2016/01/03 Javascript
javascript断点调试心得分享
2016/04/23 Javascript
jQuery获取同级元素的简单代码
2016/07/09 Javascript
zepto与jquery的区别及zepto的不同使用8条小结
2016/07/28 Javascript
js检查是否关闭浏览器的方法
2016/08/02 Javascript
AngularJS中transclude用法详解
2016/11/03 Javascript
微信小程序 实现拖拽事件监听实例详解
2016/11/16 Javascript
js实现5秒倒计时重新发送短信功能
2017/02/05 Javascript
js实现带三角符的手风琴效果
2017/03/01 Javascript
JS实现侧边栏鼠标经过弹出框+缓冲效果
2017/03/29 Javascript
微信小程序合法域名配置方法
2019/05/06 Javascript
angular6开发steps步骤条组件
2019/07/04 Javascript
vue解决跨域问题(推荐)
2020/11/10 Javascript
微信 用脚本查看是否被微信好友删除
2016/10/28 Python
离线安装Pyecharts的步骤以及依赖包流程
2020/04/23 Python
Python实现统计文本文件字数的方法
2017/05/05 Python
在Python中使用AOP实现Redis缓存示例
2017/07/11 Python
15行Python代码实现免费发送手机短信推送消息功能
2020/02/27 Python
美国新娘礼品店:The Paisley Box
2020/09/08 全球购物
应届生服装设计自我评价
2013/09/20 职场文书
电子商务应届生求职信
2013/11/16 职场文书
电子专业推荐信范文
2013/11/18 职场文书
法学专业本科生自荐信范文
2013/12/17 职场文书
家长学校实施方案
2014/03/15 职场文书
高三学生评语大全
2014/04/25 职场文书
银行优秀员工事迹材料
2014/05/29 职场文书
会计系毕业求职信
2014/08/07 职场文书
2014乡镇机关党员个人对照检查材料思想汇报
2014/10/09 职场文书
中学生思想品德评语
2014/12/31 职场文书
深入浅析Django MTV模式
2021/09/04 Python