我正在尝试在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的错误。我假设我不打算正确设置函数查找对象,但不知道如何这样做。谢谢你的帮助。
答案 0 :(得分:3)
问题可能只是不正确的情况
myLookup[dataType](someData);
应该是(注意大写U)
myLookUp[dataType](someData);
答案 1 :(得分:0)
在我写完之后看了我的帖子,愚蠢的疏忽,我将属性声明为字符串,而不仅仅是属性。
....
var myLookUp = {
string: stringFunc,
int: intFunc
};
....
解决了这个问题。
一些额外的跟进,在我的实际代码中dataType是jQuery select的结果。不知道为什么或者这是否依赖于浏览器(我正在使用FireFox),但是在属性定义周围使用双引号有效,单引号不起作用,也没有引号也可以。 : - \