我基本上试图在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");
非常感谢任何帮助。
答案 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" */