0

问了一个类似的问题,但它不符合我遇到的条件。

我知道要访问一个属性,我可以使用点表示法或括号表示法。jibbering.com 上的一篇文章也有同样的说法,这个答案也是如此。规范也是这么说的。

我有这个例子(小提琴)并且有区别:

var utils = {
    myString: "boo",
    myNumber: 99,
    justNULL: null
};

for (var i in utils) {
    document.write ( i + " = " + utils.i + "<br/>" ); //result - undefined
    document.write ( i + " = " + utils[i] + "<br/>" );//result - the actual value
}​

我在这里缺少什么?是关于 for..in 的使用还是对象的定义?

4

2 回答 2

1

您需要在这里使用 utils[i] 格式,因为 i 是一个字符串,并且不能使用字符串引用来访问使用 use object.property 格式的属性。

var obj = {};
obj.foo = 'test';

obj.'foo' // doesn't work
obj['foo'] // works
于 2012-04-16T06:34:28.533 回答
1

不,问题在于点符号的使用。

You can't use a variable for the property name when you are using the point notation. The expression utils.i will access the property i in the object, it won't use the variable i for the name.

于 2012-04-16T06:34:52.953 回答