JavaScript属性数组中的嵌套属性

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript属性数组中的嵌套属性相关的知识,希望对你有一定的参考价值。

我正在尝试在对象'obj'内填充数组'arr',并使用我在此'obj'中定义的属性,在本例中为属性'< [x';

基本上,数组将具有x值,但是,当访问'arr'时,所有条目都是

undefined。

我做了什么:

var obj = x: 1, arr: [this.x, this.x, this.x], ; console.log(obj.arr)
我应该如何在数组内部引用x?我试图用括号将arr括起来,但这只会给我带来语法错误。我尝试搜索此工作方式,但没有发现有用的信息...

此外,我希望该arr具有两个维度,例如:

var obj = x: 1, arr: [ [this.x, this.x, this.x], [this.x, this.x, this.x], [this.x, this.x, this.x] ], ; console.log(obj.arr);
然后它将如何工作?
答案
您不能在对象中引用this,该功能可以使用。要访问该属性,您可以分配和重用。

其他方法,使用ES6可以简化它。但是在这种情况下,您不能将其重新设置。它将是只读的。

检查示例。

var obj = x: 1 ; obj.arr = [obj.x, obj.x, obj.x] console.log(obj.arr) /// Other way arround , USING ES6 get var obj = x: 1, get arr() return [this.x, this.x, this.x]; , ; console.log(obj.arr); // [1,1,1] obj.arr = [1] // modify console.log(obj.arr); // [1,1,1] still same
.as-console-row 
  color: blue !important;
另一答案
这是因为在创建对象之前,用户无法访问this来初始化任何其他属性。如果您仍然想创建一个数组,则可以将其定义为一个执行未决的方法,除非调用该方法。

var obj = x: 1, arr: function() return [this.x, this.x, this.x] ; console.log(obj.arr())
另一答案
通常,您在初始化期间无法引用对象。之后,您必须像这样:

var obj = x: 1, ; obj.arr = new Array(3).fill(obj.x); console.log(obj);
另一答案
您可以在本主题中看到许多解决方案:Self-references in object literals / initializers

以上是关于JavaScript属性数组中的嵌套属性的主要内容,如果未能解决你的问题,请参考以下文章

如何通过嵌套对象属性对 JavaScript 对象数组进行排序?

Javascript怎么跳出循环,嵌套循环。

JavaScript - 编辑嵌套对象

将HTML表单序列化为JavaScript对象,支持嵌套的属性和数组。

从嵌套的 javascript 对象中删除属性的最佳方法是啥?

如何过滤 JavaScript 中的嵌套对象属性?