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 对象数组进行排序?
将HTML表单序列化为JavaScript对象,支持嵌套的属性和数组。