Javascript 是否可以引用JS数组/对象中的另一个元素

Javascript 是否可以引用JS数组/对象中的另一个元素,javascript,arrays,Javascript,Arrays,不知怎的,我找不到合适的术语来搜索这个问题,基本上我想用javascript来实现这一点: var demo = [{part1: 'a', part2: 'b', part3: this.part1 + this.part2}]; 现在我认为这是不可能的,但是因为我不能确定为什么和怎么称呼这个结构,也许这里有人可以 这种情况是否有一个术语或准确的描述? 这个问题可以用js解决吗 谢谢 编辑: 鉴于这些评论,我需要更具体地说: var demo = [ { text: 'long

不知怎的,我找不到合适的术语来搜索这个问题,基本上我想用javascript来实现这一点:

var demo = [{part1: 'a', part2: 'b', part3: this.part1 + this.part2}];
现在我认为这是不可能的,但是因为我不能确定为什么和怎么称呼这个结构,也许这里有人可以

  • 这种情况是否有一个术语或准确的描述?
  • 这个问题可以用js解决吗
谢谢

编辑:

鉴于这些评论,我需要更具体地说:

var demo = [
{
    text: 'long text',
    action: function(xy) { log(text);}
},
{
    text: 'long text2',
    action: function(xy) { log(text);}
},
];
目标是让action记录用它定义的文本


EDIT2:@Enigram已经清除了几乎所有的东西,这是一个额外的奖励

而不是

 demo[1].action()
按此方式调用操作时解决此问题:

 var someCaller = demo[1].action;
 someCaller();
是的,你可以

var newObj = { part1: 'a', part2: 'b' }; 
newObj.part3 = newObj.part1 + newObj.part2; 
demo = [newObj];


您可以轻松地拆分动态部分
demo.part3
demo.action
,并在定义对象后调用它

var demo = {
    text: 'long text',
};
demo.action = function(xy){console.log(this.text)};
同样地

var demo = {part1: 'a', part2: 'b'};
demo.part3 = demo.part1 + demo.part2;
// {part1: "a", part2: "b", part3: "ab"}
如果要保持对象数组的格式

var demo = [{
        part1: 'a', 
        part2: 'b', 
        part3: function(){return this.part1 + this.part2;}
    }
];
然后在使用
part3
时,您可以将其称为
demo[0]。part3()
将为您提供
'ab'


你不断地修改你想要完成的事情。下面是更新的示例和您的最新编辑

var demo = [
    {
        text: 'long text',
        action: function(xy) {
            console.log(this.text);
        }
    },
    {
        text: 'long text2',
        action: function(xy) {
            console.log(this.text);
        }
    }
];
调用和结果

demo[0].action() // long text
demo[1].action() // long text2

Edit2答案

var someCaller = demo[1].action();
someCaller; //long text2
我相信您希望将
demo[1].action()的结果传递给变量,而不是像当前那样将整个函数分配给变量。因此,只要将
()
添加到赋值中,就会调用函数运行并将结果传递给
某个调用方


因为我们使用了
this
,所以需要这样做。它始终引用它所引用的父对象。因此,如果您执行
var-someCaller=demo[1]。action
现在引用“someCaller”,它不具有原始
demo
对象的其他属性,因此您得到
未定义的

Try
var-obj={part1:'a',part2:'b};obj.part3=obj.part1+obj.part2;演示=[obj]。你能不能写
var-demo=[{part1:a',part2:b',part3:demo[0]。part1+demo[0]。part2}]?或者您需要使用
this
?但是
{part1:a',part2:this.part1+this.part3,part3:b'}
看起来像什么?如果
part3
是对象的一部分,但尚未定义,它将如何分配值<代码>第3部分
可能是function@FabrizioCalderan我猜我的调试空间被包含在内了,这不起作用..我在chrome控制台上测试过,效果很好。这符合你的要求吗?或者你在寻找一些不同的东西?几乎,我的现实世界的问题有一点不同的范围,因为该操作是由其他函数调用的-这相当混乱-但是你帮助我了解了很多,我现在有了一个解决方案-所以谢谢!如果没有更准确的答案(这是我的假设),我会接受你的答案。如果你发布了与现实世界问题相关的更具体的代码,那么我们可以更接近。但很高兴这帮你走上了正轨。请看新的编辑,但我现在得走了,明天见,谢谢大家的帮助!虽然我确实想不带()通过考试,但你已经很好地解释了考试的后果,再次感谢!
var someCaller = demo[1].action();
someCaller; //long text2