引用自己的JavaScript对象中的另一个对象

引用自己的JavaScript对象中的另一个对象,javascript,object,Javascript,Object,我声明自制是cask的一个依赖项,并通过this.Homebrew[0]引用自制。JavaScript可以实现类似的功能吗 var data = { homebrew: [ { title: "Homebrew", dependencies: [], install: function() { console.log('homebrew') } }, { title: "Cask",

我声明自制是cask的一个依赖项,并通过
this.Homebrew[0]
引用自制。JavaScript可以实现类似的功能吗

var data = {
  homebrew: [
    {
      title: "Homebrew",
      dependencies: [],
      install: function() {
         console.log('homebrew')
      }
    },
    {
      title: "Cask",
      dependencies: [
         this.homebrew[0]
      ],
      install: function() {
         console.log('cask')
      }
    }
  ]
}

这是可能的。您可以做的一件事是在数组之外创建对象,并以这种方式设置引用,例如:

var Homebrew = { title: "Homebrew" }
var Cask = { title: "Cask", dependencies: [Homebrew] }
var data = [ Homebrew, Cask ]

一种可能性是使用单独的依赖项对象

var data = {
  homebrew: [
    {
      title: "Homebrew",
      dependencies: [],
      install: function() {
         console.log('homebrew')
      }
    },
    {
      title: "Cask",
      dependencies: [
         this.homebrew[0]
      ],
      install: function() {
         console.log('cask')
      }
    }
  ]
};

var dependencies = [
  {
    data.homebrew[0],
    data.homebrew[1]
  }
];

使用Javascript语法(定义getter)的解决方案:

var数据={
自制:[
{
标题:“自制”,
依赖项:[],
安装:函数(){
console.log(“自制”)
}
},
{
标题:“木桶”,

获取依赖项(){/
数据
在您的案例中应该是一个对象。此外,
依赖项
在进一步的逻辑中是如何使用的?
依赖项
应该将整个对象映射为
自制
您不能在一个单步对象文字中完成它-如果您使用多步初始化,这是可能的。我认为这是一种不安全的方法。如果重新排列了
自制
数组,则
dependencies
属性将继续返回第0项,从而破坏依赖关系图。它还破坏了我的一条基本规则,即对象在内部不应通过其所分配变量的名称来引用自身。re:后面的注释,请尝试var x=data;data={};console.log(x.homebrew[1].dependencies)
-您现在有一个损坏的对象