对象Eloquent JavaScript列表

问题描述 投票:0回答:2

[Eloquent JavaScript书https://eloquentjavascript.net/04_data.html中的练习遇到了麻烦。任务是从数组中创建列表。实际上我在理解本书提出的清单概念时遇到了麻烦。这就是说的话。

对象,作为通用值blob,可用于构建所有种类数据结构。常见的数据结构是列表(不要与数组混淆)。列表是一组嵌套的对象,其中第一个对象引用第二个对象,第二个对象引用第三,依此类推。

let list = {
  value: 1,
  rest: {
    value: 2,
    rest: {
      value: 3,
      rest: null
    }
  }
};

关于列表的一件好事是,它们可以共享部分内容结构体。例如,如果我创建两个新值:{value: 0, rest: list}{value: -1, rest: list}(列表引用绑定,它们都是独立的列表,但它们共享构成最后三个要素的结构。原始清单仍然是有效的三元素列表。

我不明白他是如何创建两个新值的,它们是如何独立列出的。如果有人可以提供良好的代码示例,这将非常有帮助。我只是初学者。

javascript
2个回答
0
投票

他是如何创建两个新值的?

只需创建两个新变量并为其分配值:

const list = {
  value: 1,
  rest: {
    value: 2,
    rest: {
      value: 3,
      rest: null
    }
  }
};

const first = { value: 0, rest: list };
const second = { value: -1, rest: list };

console.log(first)
console.log(second)

它们如何是独立列表?

这些只是两个不同的变量,每个主题都有其自己的价值-因此,它们是独立的。在这种情况下,由于它们具有数据结构,因此可以称为独立lists。而且,它们从list变量共享相同的结构。这意味着,如果我们更改list变量中的某些内容,将影响firstsecond列表中包含对list变量的引用的部分。反之亦然,如果我们在firstsecond中进行更改,它也会影响list

希望有帮助:)


0
投票

创建两个数组时,例如:

const a = [0];
const b = [-1];

这两个数组彼此独立-a被分配了自己的数组实例,b也被分配了自己的数组实例。这同样适用于对象(实际上,数组本身就是对象)。如果您有两个这样的对象:

const a = {value: 0, rest: null};
const b = {value: -1, rest: null};

每个变量都有自己的对象字面量。独立对象本身充当其自己的独立列表。

在本书给出的示例中,您仍然具有两个独立创建的列表的情况(因为每个对象字面量代表一个新列表),但是rest属性的值是对另一个对象的引用( 3rd)list

const a = {value: 0, rest: list};
const b = {value: -1, rest: list};

所以ab是它们自己的列表实例,但是它们都有一个引用,它们指向先前创建的同一list对象。

© www.soinside.com 2019 - 2024. All rights reserved.