如何创建javascript函数查找对象?

时间:2011-05-24 01:06:54

标签: javascript

我正在尝试在Javascript中创建函数查找,实质上是将数据类型映射到为该数据类型执行某些操作的函数。现在我有类似的东西:

var Namespace = Namespace || {};
Namespace.MyObj = function () {
    var stringFunc = function(someData) {
        //Do some string stuff with someData
    };

    var intFunc = function(someData) {
        //Do some int stuff with someData
    };

    var myLookUp = {
        'string': stringFunc,
        'int' : intFunc
    };

    return {
         PublicMethod: function (dataType, someData) {
             myLookUp[dataType](someData);
         }
    };
} ();

当我调用Namespace.MyObj.PublicMethod(dataType, someData)时,我收到一条未定义myLookUp的错误。我假设我不打算正确设置函数查找对象,但不知道如何这样做。谢谢你的帮助。

2 个答案:

答案 0 :(得分:3)

问题可能只是不正确的情况

myLookup[dataType](someData);

应该是(注意大写U)

myLookUp[dataType](someData);

答案 1 :(得分:0)

在我写完之后看了我的帖子,愚蠢的疏忽,我将属性声明为字符串,而不仅仅是属性。

....
var myLookUp = {
    string: stringFunc,
    int: intFunc
};
....

解决了这个问题。

一些额外的跟进,在我的实际代码中dataType是jQuery select的结果。不知道为什么或者这是否依赖于浏览器(我正在使用FireFox),但是在属性定义周围使用双引号有效,单引号不起作用,也没有引号也可以。 : - \