如何在对象的JavaScript数组实例化期间引用属性
我想:如何在对象的JavaScript数组实例化期间引用属性,javascript,Javascript,我想: 实例化对象的JavaScript数组,其中对象属性引用对象本身的其他属性,然后 使用数组配置一组按钮的单击事件 问题(请参见上面的片段): 调用另一个函数()时,mymessage和myvalue参数未定义 单击类myclass*的按钮时,x[i].myaction();未定义,因为在单击按钮时,我计算2 var x=[{ mymessage:“这是message1”, myclass:“myclass1”, myvalue:10, myaction:function(){ var r
myclass*
的按钮时,x[i].myaction();未定义,因为在单击按钮时,我计算2var x=[{
mymessage:“这是message1”,
myclass:“myclass1”,
myvalue:10,
myaction:function(){
var res=另一个函数(mymessage,myvalue);
//用res做点什么
}
}, {
mymessage:“这是message2”,
myclass:“myclass2”,
我的价值:20,
myaction:function(){
res=另一个函数(mymessage,myvalue);
//用res做些别的事情
}
}];
函数另一个函数(m,v){
警报(m);
返回v;
}
对于(变量i=0,len=x.length;i
单击me1
单击me2只需将其更改为以下内容
var x={
mymessage:“这是一条消息”,
myclass:“myclass”,
myvalue:10,
myaction:function(){
另一个函数(x.mymessage,x.myvalue);
}
};
函数另一个函数(m,v){
警报(m);
}
$('..+x.myclass)。单击(x.myaction)代码>
你好
只需将其更改为以下内容
var x={
mymessage:“这是一条消息”,
myclass:“myclass”,
myvalue:10,
myaction:function(){
另一个函数(x.mymessage,x.myvalue);
}
};
函数另一个函数(m,v){
警报(m);
}
$('..+x.myclass)。单击(x.myaction)代码>
你好
只需使用x.mymessage
和x.myvalue
var x={
mymessage:“这是一条消息”,
myclass:“myclass”,
myvalue:10,
myaction:function(){
另一个函数(x.mymessage,x.myvalue);
}
};
函数另一个函数(m,v){
警报(m);
}
$('..+x.myclass)。单击(x.myaction)
单击我
只需使用x.mymessage
和x.myvalue
var x={
mymessage:“这是一条消息”,
myclass:“myclass”,
myvalue:10,
myaction:function(){
另一个函数(x.mymessage,x.myvalue);
}
};
函数另一个函数(m,v){
警报(m);
}
$('..+x.myclass)。单击(x.myaction)
单击我
出于可重用的目的,您实际上应该在对象中使用此
,如
myaction: function() {
anotherfunction(this.mymessage, this.myvalue);
}
但是,您应该在事件侦听器的回调中使用适当的上下文调用它,如下所示
var x={
mymessage:“这是一条消息”,
myclass:“myclass”,
myvalue:10,
myaction:function(){
另一个函数(this.mymessage,this.myvalue);
}
};
函数另一个函数(m,v){
警报(m);
}
$('.+x.myclass)。单击(函数(e){x.myaction()})
单击我
出于可重用的目的,您实际上应该在对象中使用此
,如
myaction: function() {
anotherfunction(this.mymessage, this.myvalue);
}
但是,您应该在事件侦听器的回调中使用适当的上下文调用它,如下所示
var x={
mymessage:“这是一条消息”,
myclass:“myclass”,
myvalue:10,
myaction:function(){
另一个函数(this.mymessage,this.myvalue);
}
};
函数另一个函数(m,v){
警报(m);
}
$('.+x.myclass)。单击(函数(e){x.myaction()})
单击我
按照您的解决方案(实际上回答了原始问题),我意识到我的问题过于简单,我根据您的解决方案(实际上回答了原始问题)对其进行了修改,我意识到我的问题过于简单,我修改了它,它给出了“未定义”的result@RobertoVanoli关于这个的观点非常好。我忽略了。现在一切都好了。谢谢你的建议,我编辑了我的问题(但请注意,我的问题已从“实例化对象”改为“实例化数组”)。@Roberto Vanoli我已修改了我的答案,以涵盖你的扩展问题。这很有效,谢谢+1为向我展示闭包的实际用法:-)它给出了“undefined”作为result@RobertoVanoli关于这个的观点非常好。我忽略了。现在一切都好了。谢谢你的建议,我编辑了我的问题(但请注意,我的问题已从“实例化对象”改为“实例化数组”)。@Roberto Vanoli我已修改了我的答案,以涵盖你的扩展问题。这很有效,谢谢+1为向我展示闭包的实际用法:-)请查看我对@Oriol responsepls的评论。请根据您对该问题的修改版本查看我对@Oriol responseAs的评论。通过for循环中的iLife,您可以在闭包下使用i
。我理解您的意思,但不幸的是,我对javascript不太实际,无法在上述情况下有效使用此模式:-(你能给我举个例子吗?编辑后它是@Oriol的副本:我的问题是当它被输入数组时,引用同一对象的其他属性(正如标题试图解释的那样)。在我看来,建议解决方案中有趣的部分是使用“this”子句。采用闭包可以正确使用此类数组,但“this”子句是重点。根据您对该问题的修改版本。您可以借助for循环中的IIFE将i
置于闭包之下。我理解您的意思说,但不幸的是,在上述情况下,我对javascript不太实际,无法有效地使用此模式:-(请给我一个例子?编辑后,它是@Oriol的副本:我的问题是,当同一对象被表示为数组时,引用该对象的其他属性(正如标题试图解释的那样)在我看来,建议解决方案中有趣的部分是使用“this”子句