[英]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}};
現在abc
和xyz
是同一個函數,它將如何知道是否返回b
或y
?
但是請注意,當您將函數調用為
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.