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

在javascript中使用私有成员函数对对象进行操作,javascript,html,Javascript,Html,我基本上是在尝试用javascript创建一个通用对象,我可以用它来充当一个关联数组。 但是我想给这个对象一些自定义成员,以便能够对给定对象进行操作。我想说我失败得很惨,希望有人能给我指出正确的方向 这是我所说的通用对象 function easeArray() { this.valIndex = function(searchTerm,object) { //searchTerm+object; if (searchTerm in object) {

我基本上是在尝试用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”)

任何帮助都将不胜感激。

在这行代码中:

     var  myCollection = new easeArray(); 
将变量“myCollection”设置为对已构造的新对象的引用。然后,在下一行:

     myCollection = {"dioxanes": 0,  "shunning": 1,  "plowed": 2, ...
将同一变量设置为对不同对象的引用。您在第一条语句中构造的一条在该点上消失了

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

     var index = myCollection["dioxanes"];

您将看到“索引”是0

这无法工作,因为在最新语句中,您销毁了
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" */

您将myCollection变量重新分配给不同的值-使用方法/构造函数传递值,用数据“填充”对象不会有问题,但正如ManseUK所说,您没有向myCollection添加任何内容,而是用新值覆盖它。如果我有一个数组
a=[1,2]
,那么
a=3
不会将
3
添加到数组中,它只是将
a
设置为指向
3
,而不是数组。这是基本的变量赋值。另外,我不明白这与“私人成员”(JS中根本不存在)有什么关系。非常感谢你的解释,我是一个正在康复的actionscript上瘾者,现在开始表现出来了。我没有意识到我基本上是凌驾于价值之上的。我试图创建一个变量来键入easeArray,很明显,我不止一次地把它搞砸了。