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