关于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 相关文章推荐
利用js对象弹出一个层
Mar 26 Javascript
Three.js源码阅读笔记(基础的核心Core对象)
Dec 27 Javascript
JavaScript中的onerror事件概述及使用
Apr 01 Javascript
js 定位到某个锚点的方法
Nov 19 Javascript
详解原生js实现offset方法
Jun 15 Javascript
Vue2.0结合webuploader实现文件分片上传功能
Mar 09 Javascript
Vue+mui实现图片的本地缓存示例代码
May 24 Javascript
Vue Cli3 创建项目的方法步骤
Oct 15 Javascript
vue.js自定义组件directives的实例代码
Nov 09 Javascript
微信小程序传值以及获取值方法的详解
Apr 29 Javascript
继承行为在 ES5 与 ES6 中的区别详解
Dec 24 Javascript
Node.js学习之内置模块fs用法示例
Jan 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
Sony CFR 320 修复改造
2020/03/14 无线电
用PHP的socket实现客户端到服务端的通信实例详解
2017/02/04 PHP
php原生数据库分页的代码实例
2019/02/18 PHP
原生PHP实现导出csv格式Excel文件的方法示例【附源码下载】
2019/03/07 PHP
laravel5.1框架model类查询的实现方法
2019/10/08 PHP
Yii2框架中一些折磨人的坑
2019/12/15 PHP
yii框架结合charjs实现统计30天数据的方法
2020/04/04 PHP
让JavaScript拥有类似Lambda表达式编程能力的方法
2010/09/12 Javascript
js+css 实现遮罩居中弹出层(随浏览器窗口滚动条滚动)
2013/12/11 Javascript
javascript生成json数据简单示例分享
2014/02/14 Javascript
js实现遮罩层弹出框的方法
2015/01/15 Javascript
轻松学习jQuery插件EasyUI EasyUI实现树形网络基本操作(2)
2015/11/30 Javascript
使用 stylelint检查CSS_StyleLint
2016/04/28 Javascript
教你JS中的运算符乘方、开方及变量格式转换
2016/08/09 Javascript
ionic实现底部分享功能
2017/05/11 Javascript
JavaScript实现各种排序的代码详解
2017/08/28 Javascript
JavaScript定义及输出螺旋矩阵的方法详解
2017/12/01 Javascript
解决Vue在封装了Axios后手动刷新页面拦截器无效的问题
2018/11/08 Javascript
nodejs实现获取本地文件夹下图片信息功能示例
2019/06/22 NodeJs
Nodejs使用archiver-zip-encrypted库加密压缩文件时报错(解决方案)
2019/11/18 NodeJs
JS实现4位随机验证码
2020/10/19 Javascript
python使用RNN实现文本分类
2018/05/24 Python
Python使用numpy模块创建数组操作示例
2018/06/20 Python
浅谈Python批处理文件夹中的txt文件
2019/03/11 Python
使用python爬取抖音视频列表信息
2019/07/15 Python
django 环境变量配置过程详解
2019/08/06 Python
pytorch 实现模型不同层设置不同的学习率方式
2020/01/06 Python
CSS3使用多列制作瀑布流
2016/05/10 HTML / CSS
解决canvas转base64/jpeg时透明区域变成黑色背景的方法
2016/10/23 HTML / CSS
社区党员先进事迹
2014/01/22 职场文书
校园活动宣传方案
2014/03/28 职场文书
水利水电专业自荐信
2014/07/08 职场文书
反对四风问题自我剖析材料
2014/09/29 职场文书
教师自查自纠材料
2014/10/14 职场文书
教师个人工作总结范文2014
2014/11/10 职场文书
有关骆驼祥子的读书笔记
2015/06/26 职场文书