[英]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.