【发布时间】:2018-04-10 23:05:10
【问题描述】:
我正在制作一个单词词典,所以有 1,000,000 多个单词。
当我需要存储单词constructor 时,问题就来了。我知道这是 javascript 中的保留字,但我需要将其添加到字典中。
var dictionary = {}
console.log(dictionary ['word_1'])
//undefined, this is good
console.log(dictionary ['word_2'])
//undefined, this is good
console.log(dictionary ['constructor'])
//[Function: Object]
// this cause initialization code to break
我该如何解决这个问题?我可以像key=key+"_" 那样处理它,但这似乎很糟糕。还有什么我可以做的吗?
【问题讨论】:
-
将这些词存储为对象属性对我来说似乎不是一个好主意。也许您可以考虑的是这些词的数组:
['word_1', 'word_2', ...],或者如果您需要更多信息以及每个词:[{word: 'word_1', anotherProperty: '...'}, ...]。 -
如果属性设置在给定对象上,您将始终必须使用hasOwnProperty 来检查是否可靠。
-
问题不在于
constructor是保留字,而在于对象继承了constructor属性。 (在更一般的意义上,创建保留字的对象属性名称没有问题。) -
@nnnnnn 谢谢,是的,你明白问题所在。我可以做些什么来解决它吗?
-
如果您想测试该属性是否直接存在于对象上,请使用
.hasOwnProperty(),正如 t.niesse 已经提到的那样。
标签: javascript javascript-objects reserved-words