<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>
解决方案 »
- ext4.0中把Ext.tab.Panel放在Ext.container.Viewport只要在tab.Panel的items里加子控件就报错?
- 动态获取值传到servlet??????
- 如何在html中调用js函数!!
- Ext window拉伸
- 用 js 做的图片轮放。哪位 好人高手 来讲解一下这段代码的关键处?
- 新手求教:escape到底是对那些字符进行转换?
- 【高手讨论】javascript怪问题的解决办法
- 网页上用Javascript控制windows media player重复播放asf文件
- 请问怎么向洪恩论坛一样做一个框,然后单击左边的连接就可以在框中打开(在线等待)
- 请问:JS能否将一个command传送到server ?
- 请问如何实现点击span下面的a显示出来
- 请大侠给解释下这段正则表达式
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引用的内容.