JS 关于对象属性的访问
2013-04-27 08:46
423 查看
关于js中对象属性的访问大家都知道一般通过obj.property的方式来访问。但是如果你通过obj[property]的方式其实也是可以的。用前一种方式,使用起来有时候会很受限制,达不到我们的要求,比如有时候希望通过传入对象的属性的字符串形式来获取对象的某个属性的值时,第一种方式就要靠边了。而这时候第二种却可以很好的满足我们的要求(是不是有点像反射...)。
至于为什么能够这样,我也不太清楚,没有仔细研究过,还请知道的朋友不吝赐教。
var persons = new Array();
persons['0001'] = 'Frog';
persons['0002'] = 'Jack';
var result = '';
for( var person in persons )
{
result += person + ',';
}
这段代码会输出什么?'Frog,Jack,'?不是,结果会是'0001,0002,',想要得到前面的结果需要
for( var person in persons )
{
result += persons [person] + ',';
}
这段代码会输出什么?'Frog,Jack,'?不是,结果会是'length,0001,0002,',想要得到前面的结果需要
for( var pro in persons )
{
if( pro != "length" )
result += persons [pro] + ',';
}
(其实persons .person也是可以的)
那么是不是可以把一个对象看作一个一个属性值的数组呢?我觉得是可以的.比如下面这个:
var obj =new Object();
obj.Name = 'Frog';
其实我觉得和下面这样写是等价的;
obj = new Array();
obj["Name"] = "Frog";
在做项目的时候遇到了一个问题,为了改善用户体验,使用ajax,后台返回了一组对象的json的表示,在前台用js解析的时候因为属性名称是有规律的,因此我就想是不是可以通过循环来减少工作量呢,但是构造了属性名称的字符串却不知道怎么从json中取值了,试了好半天,才发现原来可以通过数组的形式来访问。
var person = {Name:'Frog', Address1:'test',Address2:'test'}
如果要显示地址信息,用个循环就可以了,因为person["Address1"] 其实就相当于person.Address1。
小结:这一点主要是想说明person["Address1"] 这种访问对象属性的方式。不过这些都是变通的,视自己的需要而定吧。
至于为什么能够这样,我也不太清楚,没有仔细研究过,还请知道的朋友不吝赐教。
var persons = new Array();
persons['0001'] = 'Frog';
persons['0002'] = 'Jack';
var result = '';
for( var person in persons )
{
result += person + ',';
}
这段代码会输出什么?'Frog,Jack,'?不是,结果会是'0001,0002,',想要得到前面的结果需要
for( var person in persons )
{
result += persons [person] + ',';
}
这段代码会输出什么?'Frog,Jack,'?不是,结果会是'length,0001,0002,',想要得到前面的结果需要
for( var pro in persons )
{
if( pro != "length" )
result += persons [pro] + ',';
}
(其实persons .person也是可以的)
那么是不是可以把一个对象看作一个一个属性值的数组呢?我觉得是可以的.比如下面这个:
var obj =new Object();
obj.Name = 'Frog';
其实我觉得和下面这样写是等价的;
obj = new Array();
obj["Name"] = "Frog";
在做项目的时候遇到了一个问题,为了改善用户体验,使用ajax,后台返回了一组对象的json的表示,在前台用js解析的时候因为属性名称是有规律的,因此我就想是不是可以通过循环来减少工作量呢,但是构造了属性名称的字符串却不知道怎么从json中取值了,试了好半天,才发现原来可以通过数组的形式来访问。
var person = {Name:'Frog', Address1:'test',Address2:'test'}
如果要显示地址信息,用个循环就可以了,因为person["Address1"] 其实就相当于person.Address1。
小结:这一点主要是想说明person["Address1"] 这种访问对象属性的方式。不过这些都是变通的,视自己的需要而定吧。
相关文章推荐
- js访问xml之 各种对象的属性和方法
- 关于php 如何访问以数字开头或带连字符 '-' 的对象属性
- js-return返回多个值,通过对象的属性访问
- JS 47 object is not a function 访问dom元素属性 FileUpload 对象
- 关于如何利用原生js动态给一个空对象添加属性以及属性值
- js对象字面量属性间相互访问的问题 和 这个问题与执行环境的关系
- 关于js调用ocx控件报错"对象不支持此属性或方法"的解决方法
- 浅谈JS使用[ ]来访问对象属性
- js--语法--for和for-in;访问对象的属性.和[]的区别
- js关于对象的innerHTML属性问题
- [置顶] 通过json字符串传对象集合,在js中访问对象的属性
- 使用JS闭包控制对象属性访问范围
- 关于一些基础的js对象的属性和方法问题
- JS中访问对象的属性
- 请问js对象属性值为什么用数组也可以访问
- js的Object对象如何访问中间有 . 点号的属性(键),获得其值?
- js访问xml之节点对象属性和方法【1】
- JS使用[ ]来访问对象属性
- 请问js对象属性值为什么用数组也可以访问