Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在对象的JavaScript数组实例化期间引用属性_Javascript - Fatal编程技术网

如何在对象的JavaScript数组实例化期间引用属性

如何在对象的JavaScript数组实例化期间引用属性,javascript,Javascript,我想: 实例化对象的JavaScript数组,其中对象属性引用对象本身的其他属性,然后 使用数组配置一组按钮的单击事件 问题(请参见上面的片段): 调用另一个函数()时,mymessage和myvalue参数未定义 单击类myclass*的按钮时,x[i].myaction();未定义,因为在单击按钮时,我计算2 var x=[{ mymessage:“这是message1”, myclass:“myclass1”, myvalue:10, myaction:function(){ var r

我想:

  • 实例化对象的JavaScript数组,其中对象属性引用对象本身的其他属性,然后
  • 使用数组配置一组按钮的单击事件
  • 问题(请参见上面的片段):

  • 调用另一个函数()时,mymessage和myvalue参数未定义
  • 单击类
    myclass*
    的按钮时,x[i].myaction();未定义,因为在单击按钮时,我计算2
  • var 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”子句