关于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 相关文章推荐
悄悄用脚本检查你访问过哪些网站的代码
Dec 04 Javascript
EasyUI的treegrid组件动态加载数据问题的解决办法
Dec 11 Javascript
jQuery页面图片伴随滚动条逐渐显示的小例子
Mar 21 Javascript
JQuery设置时间段下拉选择实例
Dec 30 Javascript
浅谈javascript运算符——条件,逗号,赋值,()和void运算符
Jul 15 Javascript
BootstrapValidator不触发校验的实现代码
Sep 28 Javascript
JavaScript和jQuery获取input框的绝对位置实现方法
Oct 13 Javascript
TableSort.js表格排序插件使用方法详解
Feb 10 Javascript
jquery将标签元素的高设为屏幕的百分比
Apr 19 jQuery
详解Eslint 配置及规则说明
Sep 10 Javascript
原生JS与JQ获取元素的区别详解
Feb 13 Javascript
JS中forEach()、map()、every()、some()和filter()的用法
May 11 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计算页面执行时间的实现代码
2013/06/18 PHP
win10环境PHP 7 安装配置【教程】
2016/05/09 PHP
微信支付开发发货通知实例
2016/07/12 PHP
PHP面向对象程序设计中的self、static、parent关键字用法分析
2019/08/14 PHP
js判断浏览器的比较全的代码
2007/02/13 Javascript
javascript Zifa FormValid 0.1表单验证 代码打包下载
2007/06/08 Javascript
JavaScript中json对象和string对象之间相互转化
2012/12/26 Javascript
JavaScript关闭当前页面(窗口)不带任何提示
2014/03/26 Javascript
5个书写JavaScript代码的坏习惯,看看你中枪了没?
2014/11/06 Javascript
js实现使用鼠标拖拽切换图片的方法
2015/05/04 Javascript
详解JavaScript 中的 replace 方法
2016/01/01 Javascript
JavaScript实现跑马灯抽奖活动实例代码解析与优化(一)
2016/02/16 Javascript
基于BootStarp的Dailog
2016/04/28 Javascript
AngularJs解决跨域问题案例详解(简单方法)
2016/05/19 Javascript
Node解决简单重复问题系列之Excel内容的获取
2018/01/02 Javascript
vue 路由页面之间实现用手指进行滑动的方法
2018/02/23 Javascript
Nodejs模块的调用操作实例分析
2018/12/25 NodeJs
es6中比较有用的7个技巧小结
2019/07/12 Javascript
彻底理解Python中的yield关键字
2019/04/01 Python
元组列表字典(莫烦python基础)
2019/04/03 Python
python将字典列表导出为Excel文件的方法
2019/09/02 Python
Python阶乘求和的代码详解
2020/02/14 Python
在django中form的label和verbose name的区别说明
2020/05/20 Python
Pytorch mask-rcnn 实现细节分享
2020/06/24 Python
python如何使用代码运行助手
2020/07/03 Python
html5视频常用API接口的实战示例
2020/03/20 HTML / CSS
加拿大奢华时装品牌:Mackage
2018/01/10 全球购物
可持续未来的时尚基础:Alternative Apparel
2019/05/06 全球购物
Vans澳大利亚官网:购买鞋子、服装及配件
2019/09/05 全球购物
中级会计职业生涯规划书
2014/03/01 职场文书
合作意向书格式及范文
2014/03/31 职场文书
企业文明单位申报材料
2014/05/16 职场文书
入党积极分子群众意见
2015/06/01 职场文书
pygame面向对象的飞行小鸟实现(Flappy bird)
2021/04/01 Python
Python pygame实现中国象棋单机版源码
2021/06/20 Python
Javascript中async与await的捕捉错误详解
2022/03/03 Javascript