如何将字符串“watch”用作JavaScript关联数组中的键?

时间:2010-07-17 01:21:11

标签: javascript

我有一个像这样声明的数组:

var dict = [];

当我这样做时:

dict["watch"] = 0;

此表达式提醒NaN

alert (dict["watch"]);

我知道这是因为watch()是一个函数,它是对象原型的一部分。反正有这个,所以我可以用任何单词作为我的数组中的一个键吗?

我使用的是Firefox 3.6.6

5 个答案:

答案 0 :(得分:1)

您可以执行以下操作:

var dict =
    {
        "watch": 0
    };

alert(dict["watch"]);

答案 1 :(得分:1)

关联数组的简写 * 是大括号,而不是方括号:

var dict={};
dict["watch"] = 0;

或者简单地说:

var dict={ watch:0 };

* 从技术上讲,javascript没有“关联数组”,它有“对象” - 但它们在这个特定目的下以相同的方式工作。

答案 2 :(得分:1)

我找到问题的根源(当然是在我提出问题后5秒):

我的代码在分配这样的值之前检查dict中的密钥是否未定义或为null:

 if (dict[key] == null)
      dict[key] = 0;

但由于“观察”是对象原型的一部分,dict[key] == null永远不会成真。

编辑:

然而,即使我这样做:

if (typeof dict[word] == "function" || dict[word] == null)
    dict[word] = 0;

的值
dict["watch"]

现在是function watch(){ native code }或类似的东西

明白了:

在我无限的智慧中,我在我的代码中的其他地方遇到了类似的错误,我现在已经修复了。谢谢大家的帮助!

答案 3 :(得分:1)

试试dict = {}[]用于数组文字,{}用于对象文字,它们或多或少是哈希值。它变得令人困惑,因为您仍然使用方括号进行索引。

答案 4 :(得分:1)

您在哪里执行代码?在Firefox 3.3.6,Chrome 5.0.375.99 beta,IE 8和Safari 5中,它为我提醒0。