如何通过JavaScript中的键使用对象来获取值?
问题描述:
如何在JavaScript中使用字典的功能?如何通过JavaScript中的键使用对象来获取值?
看这个question指定的方式工作,但我设置的功能实例作为这样一个关键:
Scale = function()
{
this.Collections = {};
this.IndexTracker = {};
this.UpdateIndex = function()
{
var index = 0;
for (var i = 0; i < this.Collections.length; i++)
{
this.SetIndex(this.Collections[i], index++);
}
}
this.SetIndex = function (obj, value)
{
this.IndexTracker[obj] = value;
}
this.GetIndex = function (obj, value)
{
return this.IndexTracker[obj];
}
}
this.Collections
将举办一些函数实例。
这里的问题是函数实例被this.Collections
中的下一个函数实例覆盖。 Collections
的长度始终为1
。如何解决这个问题?
答
这是一个例子:
var Scale = function() {
var _Collections = {},
_IndexTracker = {},
ret = function() {
function UpdateIndex() {
var index = 0,i,l;
for (i = 0,l=_Collections.length; i < l; i++) {
this.SetIndex(_Collections[i], index++);
}
}
function SetIndex(obj, value) {
_IndexTracker[obj] = value;
}
function GetIndex(obj, value) {
return _IndexTracker[obj];
}
return {
UpdateIndex : UpdateIndex,
SetIndex : SetIndex,
GetIndex : GetIndex
};
};
return ret;
}();
这可能是一个范围问题 - 使用'var'关键字,因此变量('this.Collections'等)仅范围内的存在的函数(对象),而不是保存到全局范围中。 – 2012-02-21 10:30:50
键将被视为字符串。如果你使用与键不同的数据类型,它将被转换为字符串。默认的字符串表示形式是'[object Object]',因此您可以考虑使用另一个键作为键(例如,使用您自己的对象序列化)。 – 2012-02-21 10:30:58
[Hash /关联数组使用多个对象作为关键字]的可能重复(http://stackoverflow.com/questions/6983436/hash-associative-array-using-several-objects-as-key) – 2012-02-21 10:33:39