在JavaScript中的属性数组中嵌套属性
我试图在对象“obj”中填充一个数组“arr”,其中包含我在此“obj”中定义的属性,在本例中是属性“x” 基本上,数组将有x个值,但是当访问“arr”时,所有条目都未定义 我所做的:在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
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(),无需转换