在JavaScript中的属性数组中嵌套属性

在JavaScript中的属性数组中嵌套属性,javascript,arrays,object,properties,nested,Javascript,Arrays,Object,Properties,Nested,我试图在对象“obj”中填充一个数组“arr”,其中包含我在此“obj”中定义的属性,在本例中是属性“x” 基本上,数组将有x个值,但是当访问“arr”时,所有条目都未定义 我所做的: var obj={ x:1, arr:[this.x,this.x,this.x], }; console.log(obj.arr)您不能在对象中引用此,它与函数一起工作。要访问属性,您可以分配和重用 另一方面,使用ES6可以简化它。但在那种情况下,你不能再让它倒退了。它将是只读的 检查示例。 var obj

我试图在对象“obj”中填充一个数组“arr”,其中包含我在此“obj”中定义的属性,在本例中是属性“x

基本上,数组将有x个值,但是当访问“arr”时,所有条目都未定义

我所做的:

var obj={
x:1,
arr:[this.x,this.x,this.x],
};

console.log(obj.arr)
您不能在对象中引用此,它与函数一起工作。要访问属性,您可以分配和重用

另一方面,使用ES6可以简化它。但在那种情况下,你不能再让它倒退了。它将是只读的

检查示例。

var obj={
x:1
};
obj.arr=[obj.x,obj.x,obj.x]
控制台日志(obj.arr)
///另一种方法是使用ES6 get
var obj={
x:1,
获取arr(){
返回[this.x,this.x,this.x];
},
};
控制台日志(obj.arr);//[1,1,1]
obj.arr=[1]//修改
控制台日志(obj.arr);//[1,1,1]仍然相同
。作为控制台行{
颜色:蓝色!重要;

}
您不能在对象中引用此,它与函数一起工作。要访问属性,您可以分配和重用

另一方面,使用ES6可以简化它。但在那种情况下,你不能再让它倒退了。它将是只读的

检查示例。

var obj={
x:1
};
obj.arr=[obj.x,obj.x,obj.x]
控制台日志(obj.arr)
///另一种方法是使用ES6 get
var obj={
x:1,
获取arr(){
返回[this.x,this.x,this.x];
},
};
控制台日志(obj.arr);//[1,1,1]
obj.arr=[1]//修改
控制台日志(obj.arr);//[1,1,1]仍然相同
。作为控制台行{
颜色:蓝色!重要;

}
这是因为在创建对象之前,用户无法访问
来初始化任何其他属性。如果您仍然想要创建一个数组,那么可以将其定义为一个方法,除非被调用,否则该方法的执行是挂起的

var obj={
x:1,
arr:function(){
返回[this.x,this.x,this.x]
}
};

console.log(obj.arr())
这是因为在创建对象之前,用户无法访问
来初始化任何其他属性。如果您仍然想要创建一个数组,那么可以将其定义为一个方法,除非被调用,否则该方法的执行是挂起的

var obj={
x:1,
arr:function(){
返回[this.x,this.x,this.x]
}
};

console.log(obj.arr())
通常在初始化过程中不能引用对象。之后你必须这样做:

var obj={
x:1,
};
obj.arr=新数组(3).fill(obj.x);

控制台日志(obj)通常在初始化过程中不能引用对象。之后你必须这样做:

var obj={
x:1,
};
obj.arr=新数组(3).fill(obj.x);

控制台日志(obj)在本主题中可以看到许多解决方案:

以下是其中一些:

解决方案1

var obj = {
  x: 1,
  get arr() {
    return [this.x, this.x, this.x]
  }
};
解决方案2

var x = 1;
var obj = {
  x: x,
  arr: [x, x, x]
};
解决方案3

var obj = {
  x: 1,
};

obj.arr = [ obj.x, obj.x, obj.x ];

在本主题中,您可以看到许多解决方案:

以下是其中一些:

解决方案1

var obj = {
  x: 1,
  get arr() {
    return [this.x, this.x, this.x]
  }
};
解决方案2

var x = 1;
var obj = {
  x: x,
  arr: [x, x, x]
};
解决方案3

var obj = {
  x: 1,
};

obj.arr = [ obj.x, obj.x, obj.x ];

这回答了你的问题吗?这回答了你的问题吗?您可以在函数ES6中使用get(),无需转换。您可以在函数ES6中使用get(),无需转换