[code="js"]
var obj = {name:'john'};
obj[name]='tom';
alert(obj.name);
alert(obj[tom]);
[/code]
obj.name 是访问这个obj的name属性,
obj[name]表示什么呢?
obj是对象还是数组啊?
问题的关键在于这一行代码写错了。
[code="javascript"]obj[name]='tom'; [/code]
应该写成
[code="javascript"]obj['name']='tom'; [/code]
下面获取的代码同理
对象无论是按索引还是按key都能访问到属性,但是name不加引号的话,程序会把name所代表的含义作为索引,也就是undefind。其实你obj里有两个key,一个是name,一个空的,所以存了两个value
属性的两种访问方式,[]是通过索引访问。
{key:value,...}为json对象,json.key和json[key]为json对象访问内部属性值的方式;
应该是:
alert(obj['name']);
这样写name是个变量:
obj[name]='tom';
alert(obj[name]);
javascript对象的属性有两种访问方式:
一、obj.proptname直接访问;这个和一般的语言语法相似
二、obj.['proptname']与数组访问下标方式类似;这种用于动态访问对象属性
第二种方式可以用于遍历对象的所有属性,如下段代码
[code="javascript"]
var o = {a:1,b:2};
for(var p in o)
alert('o.'+p+'='+o[p]);
[/code]
输出结果为:
o.a=1
o.b=2
javascrpt的数组有两种,
1.我们常见常用的常规数组。
2.关联数组。
我介绍一下啥是关联数组,其实就是一个包含属性的对象,比如
function person(name,age){
this.name=name;
this.age=age
}
对于这么一个对象,如果们new一个出来 var obj = new person('张三',23);
这个时候obj是一个对象,我们也可以说他是一个关联数组,因为如果你要访问obj的name属性除了obj.name以外也可以这样obj["name"]
这并不矛盾,因为数组也是对象嘛,但是关联数组的长度永远都是1,
alert(obj.length);// 答案为1.