![](/img/trans.png)
[英]How do I access an object via another object that contains an object which is a property of the object I want to have access to?
[英]When I assign an object to a property of an object, does the property become an object? If so, how do I access the first object via the second one?
我把這個問題分成了幾個子問題,因為它們都是相關的,並且對我不明白的部分進行了補充。
首先,當我將 object 分配給屬性時,該屬性是否也變為 object?
例子:
var object1 = new Object(); object1.color = "red"; var newobject = { "obname": object1 }
Here, I instantiate an object object1
, and then I instantiate another object, newobject
, and assign the first object, object1
as a value to the property obname
of the newobject
object.
現在, obname
現在是 object 嗎? 我現在應該如何查看obname
?
這將我引向了第二個問題。
我現在如何通過newobject
訪問object1
的屬性?
var object1 = new Object(); object1.color = "red"; var newobject = { "obname": object1 } alert(newobject.obname);
obname
為目標返回[object object]
。 為什么?obname.object1
返回undefined
。 為什么?obname.object1.color
返回錯誤。 為什么? 我只能通過這種方式訪問object1
的屬性:
var object1 = new Object(); object1.color = "red"; var newobject = { "obname": object1 } alert(newobject.obname.color);
..僅針對obname
,然后是object1
的屬性。
最后一個重要的子問題:為什么會這樣?
color
不是obname
的屬性,那么為什么我可以通過這種方式訪問它?
你在這里問了幾個問題,所以我會試着把它們都打一遍......
var object1 = new Object(); object1.color = "red"; var newobject = { "obname": object1 }
現在,
obname
現在是 object 嗎? 我現在應該如何查看obname
?
從技術上講, obname
是newObject
object 的“屬性”或“鍵”名稱,它存儲對object1
object 的引用。
下一個:
var object1 = new Object(); object1.color = "red"; var newobject = { "obname": object1 } alert(newobject.obname.color);
我現在如何通過 newobject 訪問 object1 的屬性?
對任何其他 object 執行相同的方法,但您必須訪問第一個 object 的屬性,該屬性存儲對第二個的引用,因此您將使用兩個級別的“點表示法”
var object1 = new Object(); object1.color = "red"; var newobject = { "obname": object1 } alert(newobject.obname.color);
以
obname
為目標返回[object object]
。 為什么?
因為您嘗試“打印”(通過alert
)整個 object ,這就是您嘗試將整個 object 視為字符串時得到的結果。
以 obname.object1 為目標返回未定義。 為什么?
因為object1
沒有在obname
中聲明,所以它是通過obname
屬性“引用”的。 將此視為一個指針... obname
指向可以找到object1
的位置。
定位 obname.object1.color 會返回錯誤。 為什么?
因為obname
是指向object1
的指針,而object1
沒有名為object1
的屬性。
你可以簡單的認為obname等價於object1(It is an Object)。
當您訪問 object1 屬性時(在這種情況下,屬性是顏色)您應該獲得如下屬性的值:
object1.color 返回值“red”
把它想象成:
var newobject = {
"obname": { "color" : "red"}
}
因為 obname 沒有任何名為 object1 的屬性。 相反, obname 和 object1 是等效的對象(它們具有您自己定義的一種屬性顏色)。
alert(newobject.obname.color);
這是有效的,因為您正在正確訪問 obname 屬性。
回答為什么顏色是 obname 的屬性的問題; 那是因為您已將 obname 分配給 object1 所以它們是相同的
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.