Javascript使用保留关键字作为密钥

时间:2012-06-02 21:05:50

标签: javascript

这样做

var x = new Array();
x['length']=5;

将使x成为5个未定义项的数组,但实际上我希望将值'5'存储在键'length'中。

这可能吗?

5 个答案:

答案 0 :(得分:5)

在javascript数组中没有键。您正在寻找物品:

var x = {}
x.length = 5;

答案 1 :(得分:1)

  

我必须解析包含许多单词的文件并存储每个单词的出现次数

使用对象,并将单词设为键。您不存储顺序/有序数据,因此不应使用数组。

var word_count = {};
for (var i; i < words.length; i++) {
  var word = words[i];
  if (word_count[word]) {
    word_count[word]++;
  } else {
    word_count[word] = 1;
}

答案 2 :(得分:0)

如果你想这样做,你最好创建一个对象而不是一个数组。这应该给你你想要的东西。

var x = {};
x['length'] = 5;

答案 3 :(得分:0)

您可以使用对象而不是数组来存储数据。但是如果你需要使用Arrays(你可能需要使用它们的功能),你可能会削弱这些单词并将它们存储为数组键。

使用某种简单的规则来绕过所有可能的关键字。例如,使用“_”字符为所有数组键添加前缀。通过这种方式,您可以始终从键中恢复原始单词,只需删除它们的第一个字符,并确保您没有引用Array对象的任何特定属性(如length属性)。

答案 4 :(得分:0)

您可以使用两种不同的语法在javascript对象上调用方法。熟悉的'dot'语法与parens调用方法和方括号语法。您可以使用语法myObj["methodname"](args)在javascript对象上“调用”方法。当您想要使用字符串动态构造方法名称时,这很方便。请记住,javascript中的对象非常类似于哈希表(字典),其中键表示属性和函数名称。如果键的值包含一个函数,则可以调用它(使用括号)。

在您的示例中,Array有一个名为“length”的方法。您无意中调用了它的setter(它将数组的长度设置为空值,即未定义)。

把这一切放在一边,在这种情况下你真的想要一个哈希(关联数组)。数组是偏移索引数据结构。

myObj = {}这样的简单对象文字就足以为你提供哈希语义(同样,javascript中的对象就像哈希一样),然后你可以调用myObj.whatever = "some value"