Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当我将对象指定给对象的属性时,该属性是否成为对象?如果是,如何通过第二个对象访问第一个对象?_Javascript - Fatal编程技术网

Javascript 当我将对象指定给对象的属性时,该属性是否成为对象?如果是,如何通过第二个对象访问第一个对象?

Javascript 当我将对象指定给对象的属性时,该属性是否成为对象?如果是,如何通过第二个对象访问第一个对象?,javascript,Javascript,我把这个问题分为几个子问题,因为它们都是相关的,并且构成了我不理解的部分 首先也是最重要的一点,当我将一个对象指定给一个属性时,该属性是否也会成为一个对象 例如: var object1=新对象(); object1.color=“红色”; var newobject={ “obname”:object1 }您在这里问了几个问题,所以我将尝试一一回答 var object1=新对象(); object1.color=“红色”; var newobject={ “obname”:object1

我把这个问题分为几个子问题,因为它们都是相关的,并且构成了我不理解的部分

首先也是最重要的一点,当我将一个对象指定给一个属性时,该属性是否也会成为一个对象

例如:

var object1=新对象();
object1.color=“红色”;
var newobject={
“obname”:object1

}
您在这里问了几个问题,所以我将尝试一一回答

var object1=新对象();
object1.color=“红色”;
var newobject={
“obname”:object1

}
您可以简单地认为obname等同于object1(它是一个对象)

当您访问object1属性(在本例中,属性为color)时,您应该获得如下属性值:

object1.color,返回值“红色”

  • 以obname为目标返回[object]。为什么? 因为obname是一个对象
可以这样想:

var newobject = { 
  "obname": { "color" : "red"}
}
  • 目标obname.object1返回未定义的。为什么?
  • 目标obname.object1.color返回错误。为什么?
因为obname没有任何名为object1的属性。相反,obname和object1是等效的对象(它们有一个自己定义的属性颜色)

这是因为您正在正确访问obname属性


回答为什么颜色是obname的属性的问题;这是因为您已将obname指定给object1,因此它们是相同的

“颜色不是obname的属性”-为什么不?
obname
不是对象。它是一个属性名,指向分配给它的任何值。在本例中,对象的属性名为
color
。它不是自由浮动属性,它只存在于
newobject
中。这就是为什么您必须以
newobject.obname.color
const object2=newobject.obname;console.log(object2.color)。提示`object2===object1`。您了解对象是什么吗(一般来说,在OOP中,特别是在JS中)?@SergioTulentsev
color
被分配给第一个对象
object1
。如果
obname
不是对象,如何通过
obname
访问另一个对象的属性
object1
?我正在将对象
object1
分配给属性
obname
。那么,这是否意味着
object1
的所有属性都不是
obname
属性的属性?为什么呢?您可以简单地认为obname等同于object1(它是一个对象)。但我不明白它们怎么是等价物?我是否没有将
object1
分配给
obname
?当我将
object1
分配给
obname
时,我是否将
object1
的属性和值以及可能的方法分配给
obname
?我没想到它是这样工作的。@ScottMarcus如果它有一个对象的引用,为什么我可以直接访问该对象的属性而不引用
object1
本身?@TaishoMori查看我最近对您上述其他评论的回复。但我的目标是
object1
的属性
color
,而不是名为
object1
的属性?还有,最后一个问题呢?为什么
obname.color
返回该属性的值,因为
color
没有作为属性分配给
obname
?我以为
obname
只是引用了对象
object1
,那么为什么我可以通过
obname
访问
object1
的属性呢?说
obname.object1.color
就不能访问属性
color
,感觉非常不合逻辑,但要访问它,可以省略
object1
,只说
obname.color
,尽管
color
object1
的属性而不是
obname
@taishori
obname
指向
object1
对象,因此,当您说
obname
时,您可以访问
object
拥有的所有内容,例如它的
color
属性。但是
obname
没有名为
object1
的属性,因此不能键入
obname.object1
,因为
object1
不是
obname
@taishori中的属性名。如果你想从我妹妹萝莉那里找到什么,你可以直接去找她说“萝莉,你最喜欢什么颜色?”(即
Lori.color
)。但是,如果你想通过我获得这些信息,我会以不同的方式引用我妹妹。那可能是
Scott.sister.color
,其中
sister
只是对
Lori
的引用。但是说
Scott.Lori.color
是错误的,因为我妹妹不是我的一部分。@TaishoMori
Scott.Lori
意味着
Scott
有一个名为
Lori
的属性,这没有多大意义
Lori
是我的
妹妹
,我和她有一种关系,这是一个属性在这里建立的,一种关系或指向其他完全独立事物的指针。
alert(newobject.obname.color);