簡體   English   中英

從嵌套對象文字返回屬性名稱

[英]Return the property name from a nested object literal

我有一個對象,我正在嘗試獲取方法的父屬性的名稱。

var a = {b: {c: function() {return // I want "b" }}}

這可能嗎?

這是不可能的。 當變量對象包含對函數的引用時,則沒有相反的引用。 也可以有多個參考,例如

var a = {b: {c: function() {return // I want "b" }}}
var x = {y: {z: a.b.c}};

現在abcxyz是同一個函數,它將如何知道是否返回by

但是請注意,當您將函數調用為

a.b.c()

它在this接收ab作為上下文。 因此,您可以執行以下操作:

 var a = { b: { c: function() { console.log(this.d); }, d: 1 } }; var x = { y: { z: abc, d: 10 } }; abc(); xyz(); 

但是,這仍然不能幫助您獲取屬性名稱b

您可以聲明一個函數來迭代包含該函數的對象, 但是我們必須知道主對象 (在這種情況下 )。

要調用函數,因為我們不知道B,我們不得不重復特性以及嵌套對象找到它。

 var a = {b: {c: function() {for(p in a)console.log(p) }}} for(p in a){ for(p2 in a[p]){ a[p][p2](); } } 

我可能是在強制執行規則,因為您沒有對主要對象(a)講任何話,但是這里的想法是從頭開始並逐步實現目標。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM