繁体   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