如何在JavaScript中使用object通过键放置和获取值?

如何在JavaScript中使用object通过键放置和获取值?,javascript,Javascript,如何在JavaScript中使用字典功能 看这个,指定的方法正在工作,但我将函数实例设置为如下键: Scale = function () { this.Collections = {}; this.IndexTracker = {}; this.UpdateIndex = function () { var index = 0; for ( var i = 0; i < this.Collections.length; i+

如何在JavaScript中使用字典功能

看这个,指定的方法正在工作,但我将函数实例设置为如下键:

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];
    }
}
Scale=函数()
{
this.Collections={};
this.IndexTracker={};
this.UpdateIndex=函数()
{
var指数=0;
for(var i=0;i
this.Collections
将保存某个函数实例

这里的问题是函数实例被
this.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 Scale=函数(){
var_集合={},
_IndexTracker={},
ret=函数(){
函数UpdateIndex(){
var指数=0,i,l;
对于(i=0,l=_Collections.length;i
这是一个例子:

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 Scale=函数(){
var_集合={},
_IndexTracker={},
ret=函数(){
函数UpdateIndex(){
var指数=0,i,l;
对于(i=0,l=_Collections.length;i
这可能是一个范围问题-使用
var
关键字,使变量(
this.Collections
等)仅存在于函数(对象)的范围内,而不是保存在全局范围内。键将被视为字符串。如果将不同的数据类型指定为键,它将转换为字符串。默认的字符串表示形式是
[object object]
,因此您必须考虑其他用作键的内容(例如,使用您自己的对象序列化)。它的可能重复可能是一个范围问题-使用
var
关键字,以便变量(
this.Collections
等)仅存在于函数(对象)的范围内,而不是保存到全局范围。键将被视为字符串。如果将不同的数据类型指定为键,它将转换为字符串。默认的字符串表示形式是
[object object]
,因此您必须考虑使用其他内容作为键(例如,使用您自己的对象序列化)。可能重复