您的位置:首页 > Web前端 > JavaScript

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"] 这种访问对象属性的方式。不过这些都是变通的,视自己的需要而定吧。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: