在javascript中使用私有成员函数的对象操作
我基本上试图在JavaScript中创建一个通用对象,我可以使用它来充当联合数组。
但我想给这个对象一些自定义成员能够对给定对象进行操作。针头说我失败了,希望有人能指引我走向正确的方向。在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");
任何帮助将不胜感激。
这不可能,因为在最新的声明中工作,你摧毁你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" */
非常感谢您的解释我是一个恢复动作成瘾者,它开始显示。我没有意识到我基本上压倒了价值。我试图做一个变量,以键入easeArray,我显然设法搞砸在更多的方式。 – user677275 2012-02-03 13:55:05
在这行代码:
var myCollection = new easeArray();
您设置变量“MyCollection的”对你构建一个新的对象的引用。然后,在下一行:
myCollection = {"dioxanes": 0, "shunning": 1, "plowed": 2, ...
你相同的变量设置为一个不同对象的引用。你在第一个陈述中建立的那个在那时已经消失了。
您需要做的是将一些方法添加到“easeArray”类中,以便根据需要将值存储到其中。鉴于你发布的例子,我不知道你为什么需要这个“valIndex”函数。如果你简单地引用这些字符串之一:
var index = myCollection["dioxanes"];
你会看到“指数”为0
您的重新分配所述MyCollection的变量为不同的值 - 使用方法/构造将值传递 – ManseUK 2012-02-03 12:05:38
“填充”该对象的数据将没问题,但正如ManseUK所说,你不会向myCollection添加任何东西,你会用新的值重写它。如果我有一个数组'a = [1,2]',那么'a = 3'不会给数组添加'3',它只是将'a'设置为指向'3'而不是数组。这是基本的变量分配。我也不明白这与“私人成员”有什么关系(反正JS中不存在)。 – 2012-02-03 12:09:56