代码之家  ›  专栏  ›  技术社区  ›  Batman

从嵌套对象文本返回属性名称

  •  1
  • Batman  · 技术社区  · 7 年前

    我有一个对象,我正在尝试获取一个方法的父属性的名称。

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

    2 回复  |  直到 7 年前
        1
  •  1
  •   Barmar    7 年前

    这是不可能的。当变量对象包含对函数的引用时,没有反向引用。也可以有多个引用,例如。

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

    a.b.c x.y.z 都是同一个函数,它怎么知道是否返回 b y ?

    但是请注意,当您将函数调用为

    a.b.c()
    

    价值 属于 a.b 作为上下文 this

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

    b类 不过。

        2
  •  1
  •   Emeeus    7 年前

    但我们必须知道主要的目标 ).

    调用那个函数,因为我们不知道 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]();
        }
    }