87,921
社区成员
发帖
与我相关
我的任务
分享
<script>
var a={aa:111,bb:"ssssss",cc:true};
for(var i in a){
alert(a[i]);
alert(a.i);这里为什么是undefined?
}
</script>
// 再强调一下: theObject 的自定义属性只有一个: propertyName
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,
...
*/
// theObject 是个 Object. 有个属性: propertyName, 属性值是: "propertyValue"
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);
// 仔细对比一下这四行, 应该能想到为什么了
<script>
var a={aa:111,bb:"ssssss",cc:true};
for(var i in a){
alert(i);
alert(a.i);
alert(a[i]);
}
</script>
对象成员存取符 有两种.和[] 两者的区别就是前者.右边运算元必须是标识符 而后者[]
里可以是变量 直接量 或表达式
而
for(var i in a) 这个a是定义的变量 所以就用a[i]
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, i:"xxxx"};
for(var i in a){
alert(a[i]);
alert(a.i);这里为什么是undefined?
}