获取父级的密钥名称

时间:2016-12-05 12:27:45

标签: javascript

我有这样的功能:

this.doStuff({
    'testkey': {
        testfunction: function() {
            // will return testfunction
            console.log(Object.keys(this));
        }
    }
});

是否有办法让testkey进入测试功能范围?

Object.keys(this)将返回testfunction

3 个答案:

答案 0 :(得分:2)

JavaScript this关键字有点不寻常的野兽 - 它会根据函数的调用方式而改变,而且大部分时间this都会引用在里面发挥作用。在这种情况下,这只是testfunction,所以它自然只能为您提供该功能的本地结果。

有各种关于理解的教程:

在您的方案中,Object.keys()获取一个对象并返回其键。如果你想要object的密钥,你需要给它(我已经重命名了你的变量):

var foo = {
    'key': {
        func: function() {
            console.log(Object.keys(foo)); // <------
        }
    }
};

答案 1 :(得分:2)

如果您知道在javascript对象中调用哪种方法,那么您可以这样做。

您可以使用apply或call方法

保留调用者的范围

&#13;
&#13;
function doStuff(ob){
  ob[Object.keys(ob)]['testfunction'].call(ob);
}

doStuff({
    'testkey': {
        testfunction: function() {
            // will return testkey
            console.log(Object.keys(this));
        }
    }
});
&#13;
&#13;
&#13;

答案 2 :(得分:1)

你可以做到:

var object = {
    'testkey': {
        testfunction: function() {
            // will return testfunction
            console.log(Object.keys(object));
        }
    }
};

因为在函数范围内你可以看到全局var&#39; object&#39;