在javascript中使用私有成员函数对象进行操作

时间:2012-02-03 12:04:06

标签: javascript html

我基本上试图在javascript中创建一个通用对象,我可以使用它作为一个关联数组 但是我想给对象一些自定义成员以便能够对给定对象进行操作。有人说,我失败了,希望有人能指出我正确的方向。

这是我正在讨论的通用对象。

function easeArray() {
    this.valIndex = function(searchTerm,object) {
        //searchTerm+object;
        if (searchTerm in object) {
            return "true" + object[searchTerm]
        }
    }
}

然后我尝试像这样初始化它。

     var  myCollection = new easeArray(); 
     myCollection = {"dioxanes": 0,  "shunning": 1,  "plowed": 2,
         "hoodlumism": 3, "cull": 4,      "learnings": 5,
        "transmutes": 6, "cornels": 7,   "undergrowths": 8,
        "hobble": 9,     "peplumed": 10, "fluffily": 11,
        "leadoff": 12,   "dilemmas": 13, "firers": 14,
        "farmworks": 15, "anterior": 16, "flagpole": 17};

这很好但是当我尝试做这样的事情时:

  alert(myCollection.valIndex())

我收到错误。 类型错误:对象不支持属性或方法。

没关系,我没有将值传递给我理解的功能,但功能甚至无法识别。

我的最终结果是拥有一个可以初始化并填充键值对的通用对象,然后简单地说object.valindex("searchTerm");

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

在这行代码中:

     var  myCollection = new easeArray(); 

将变量“myCollection”设置为对您构造的新对象的引用。然后,在下一行:

     myCollection = {"dioxanes": 0,  "shunning": 1,  "plowed": 2, ...

将相同的变量设置为对不同对象的引用。你在第一个陈述中构建的那个在那时就消失了。

您需要做的是在“easeArray”类中添加一些方法,以便根据需要将值存储到其中。鉴于您发布的示例,我不确定您为什么需要“valIndex”函数。如果您只是引用其中一个字符串:

     var index = myCollection["dioxanes"];

你会看到“index”为0.

答案 1 :(得分:1)

这不起作用,因为在最新声明中,您将销毁easeArray对象的实例。因此,数组没有定义这样的方法

尝试使用此代码

var easeArray = function(obj) {
    this.obj = obj
    this.valIndex = function(searchTerm) {
        if (searchTerm in this.obj) {
            return "true" + this.obj[searchTerm];  
        } 
    }
}

var myCollection = new easeArray({
        "dioxanes": 0,  "shunning": 1,  "plowed": 2,
        "hoodlumism": 3, "cull": 4,      "learnings": 5,
        "transmutes": 6, "cornels": 7,   "undergrowths": 8,
        "hobble": 9,     "peplumed": 10, "fluffily": 11,
        "leadoff": 12,   "dilemmas": 13, "firers": 14,
        "farmworks": 15, "anterior": 16, "flagpole": 17
    });

    myCollection.valIndex("firers"); /* this returns "true14" */