繁体   English   中英

Internet Explorer 7中索引名称中的点不起作用

[英]Dots in index names in Internet Explorer 7 does not work

例如,属性['stem.secid']被Internet Explorer 7解释为properties.stem.secid,因此无法正常工作。

这个问题有解决方案或解决方法吗?

我想你可能会错在这里。 至少,这不是IE9的工作方式:

>> var x = { foo : { bar : 'hello' } }; 
>> x.foo.bar 
"hello" 
>> x['foo.bar'] 
undefined

或者更明确地说:

>> var x = {
    foo : {
        bar : 'hello'
    },
    'foo.bar' : 'goodbye'
}; 

>> x['foo.bar'] 
"goodbye"

事实并非如此。 点在属性名称中完全有效(实际上任何字符串都可以用作属性名称)并由IE 7正确处理。以下在所有浏览器中都能正常工作:

var o = {};
o['stem.secid'] = "foo";
alert(o.stem); // undefined
alert(o['stem.secid']); // foo

这是设计的。 为什么这不符合您的要求?

Javascript允许通过括号字符串表示法或您所示的点式表示法来标识属性。 这允许以下内容相同:

my.obj.stem.secid = value
my['obj']['stem']['secid'] = value

但是,这允许我们通过指定一个键来以编程方式选择特定元素:

var key1 = 'obj';
var key2 = 'stem';
var key3 = 'secid';
my[key1][key2][key3] = value
//or alternately just in parts:
my[key1].stem[key3] = value

但请注意,这与我们这样做不一样

var key1 = 'obj';
var key2 = 'stem';
var key3 = 'secid';
my.key1.key2.key3 = value

这就是为什么你会使用括号字符串作为段标识符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM