关于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 相关文章推荐
ASP SQL防注入的方法
Dec 25 Javascript
jQuery Validation实例代码 让验证变得如此容易
Oct 18 Javascript
js window.print实现打印特定控件或内容
Sep 16 Javascript
JavaScript模拟实现继承的方法
Mar 30 Javascript
AngularJS基于ui-route实现深层路由的方法【路由嵌套】
Dec 14 Javascript
JS获取input[file]的值并显示在页面的实现方法
Mar 09 Javascript
JS点击动态添加标签、删除指定标签的代码
Apr 18 Javascript
JS实现可切换图片的幻灯切换效果示例
May 24 Javascript
Layui数据表格跳转到指定页的实现方法
Sep 05 Javascript
微信小程序实现打开并下载服务器上面的pdf文件到手机
Sep 20 Javascript
vue 路由懒加载中给 Webpack Chunks 命名的方法
Apr 24 Javascript
JavaScript实现浏览器网页自动滚动并点击的示例代码
Dec 05 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-redis中文文档介绍
2013/02/07 PHP
解析curl提交GET,POST,Cookie的简单方法
2013/06/29 PHP
php中解析带中文字符的url函数分享
2015/01/20 PHP
laravel创建类似ThinPHP中functions.php的全局函数
2016/11/26 PHP
Laravel中Facade的加载过程与原理详解
2017/09/22 PHP
jquery JSON的解析方式
2009/07/25 Javascript
jquery 表单进行客户端验证demo
2009/08/24 Javascript
js获取触发事件元素在整个网页中的绝对坐标(示例代码)
2013/12/13 Javascript
js中substring和substr的定义和用法
2014/05/05 Javascript
深入理解JavaScript系列(37):设计模式之享元模式详解
2015/03/04 Javascript
JavaScript在Android的WebView中parseInt函数转换不正确问题解决方法
2015/04/25 Javascript
js-FCC算法-No repeats please字符串的全排列(详解)
2017/05/02 Javascript
angular2中router路由跳转navigate的使用与刷新页面问题详解
2017/05/07 Javascript
React Native悬浮按钮组件的示例代码
2018/04/05 Javascript
node中的cookie的具体使用
2018/09/13 Javascript
jQuery使用each遍历循环的方法
2018/09/19 jQuery
微信小程序网络层封装的实现(promise, 登录锁)
2019/05/08 Javascript
webgl实现物体描边效果的方法介绍
2019/11/27 Javascript
centos下更新Python版本的步骤
2013/02/12 Python
python抓取最新博客内容并生成Rss
2015/05/17 Python
Python中死锁的形成示例及死锁情况的防止
2016/06/14 Python
浅谈python数据类型及类型转换
2017/12/18 Python
余弦相似性计算及python代码实现过程解析
2019/09/18 Python
django中related_name的用法说明
2020/05/20 Python
Python3.9.1中使用split()的处理方法(推荐)
2021/02/07 Python
CSS3只让背景图片旋转180度的实现示例
2021/03/09 HTML / CSS
uniapp+Html5端实现PC端适配
2020/07/15 HTML / CSS
阿联酋航空官方网站:Emirates
2017/10/17 全球购物
英文留学推荐信范文
2014/01/25 职场文书
演讲比赛获奖感言
2014/02/02 职场文书
工伤事故赔偿协议书
2014/04/15 职场文书
十佳青年事迹材料
2014/08/21 职场文书
珍惜资源的建议书
2014/08/26 职场文书
政法干警核心价值观心得体会
2014/09/11 职场文书
村主任群众路线教育实践活动个人对照检查材料思想汇报
2014/10/01 职场文书
2015初中教导处工作总结
2015/07/21 职场文书