<script>
var a={aa:111,bb:"ssssss",cc:true};
for(var i in a){
alert(a[i]);
alert(a.i);这里为什么是undefined?
}
</script>
var a={aa:111,bb:"ssssss",cc:true};
for(var i in a){
alert(a[i]);
alert(a.i);这里为什么是undefined?
}
</script>
var a={aa:111,bb:"ssssss",cc:true, i:"xxxx"};
for(var i in a){
alert(a[i]);
alert(a.i);这里为什么是undefined?
}这很奇怪么? 你给a加个属性 i 不就每次都有值了.a 本来就没定义 名为 i 的属性.
alert(a.i) 怎么会不是 undefined
var a={aa:111,bb:"ssssss",cc:true};
for(var i in a){
alert(a[i]);
alert(i);//这里为什么是undefined?
}
这样才对
var a={aa:111,bb:"ssssss",cc:true};
for(var s in a){
alert(a[s]);
alert(a.s);
}
</script>
对象成员存取符 有两种.和[] 两者的区别就是前者.右边运算元必须是标识符 而后者[]
里可以是变量 直接量 或表达式
而
for(var i in a) 这个a是定义的变量 所以就用a[i]
a.i这里的i难道不是标示符吗?
标示符的定义不就是可以使用字母、数字、下划线和$符号吗?
i是有值的,可以测试下面代码<script>
var a={aa:111,bb:"ssssss",cc:true};
for(var i in a){
alert(i);
alert(a.i);
alert(a[i]);
}</script>
a.i是获取对象a的i属性,相当于a["i"],对象a没有定义i这个属性,所以是undefined
var theObject = { propertyName: "propertyValue" }// str 是个字符串
var str = "propertyName";// str 跟 theObject 本来是两个互不相干的 variable (后面 theObject.str 能不是 undefined 么)
//---------------
alert(theObject.propertyName); // 看到 "propertyValue", 没有什么问题
// propertyName 是 theObject 的属性当然能看到啦// 当然也可以这样
alert(theObject["propertyName"]) // 看到 "propertyValue", 也没有什么问题// 更可以这样
alert(theObject[str]) // 看到 "propertyValue", 也没有什么问题// 就不能这样
alert(theObject.str); // 看到 undefined
// alert(window.str);// 仔细对比一下这四行, 应该能想到为什么了
var theObject = { propertyName: "propertyValue" };
var a = "propertyName"; // a 的值 是 "propertyName"
var b = "propertyName"; // b 的值也是 "propertyName"
var c = "propertyName"; // c 的值也是 "propertyName"
var d = "propertyName"; // d 的值也是 "propertyName"
var e = "propertyName"; // e 的值也是 "propertyName"
var f = "propertyName"; // f 的值也是 "propertyName"
// .../*
难道就因为 a, b, c, d, e, f, ... 的值是 "propertyName"
你就指望 theObject 平白无故会多出来这么多属性theObject.a,
theObject.b,
theObject.c,
theObject.d,
theObject.e,
theObject.f,
...*/
var a={aa:111,bb:"ssssss",cc:true};
for(var i in a){
alert(i);//这里i的值分别为aa.bb,cc
alert(a.i);//难道这里a.i被替换成了a."aa"、a."bb"、a."cc",也自动添加了引号?
我想的这个过程到底发生没有,谁知道啊?还有怎样把a."aa"转换成a.aa?
alert(a[i]);//感觉这里a[i]好像被替换成了a["aa"]、a["bb"]、a["cc"],自动添加了引号
}
</script>
学习了.就是说 可以str['i'],但不能随便用str.i.因为str的没有属性i,但它可以调用i引用的内容.