Javascript 正在获取父项的键名

Javascript 正在获取父项的键名,javascript,Javascript,我有这样一个函数: this.doStuff({ 'testkey': { testfunction: function() { // will return testfunction console.log(Object.keys(this)); } } }); 在testfunction范围内是否有获取testkey的方法 Object.keys(this)将返回testfunction

我有这样一个函数:

this.doStuff({
    'testkey': {
        testfunction: function() {
            // will return testfunction
            console.log(Object.keys(this));
        }
    }
});
在testfunction范围内是否有获取
testkey
的方法


Object.keys(this)
将返回
testfunction

this关键字有点不同寻常-它将根据调用函数的方式而变化,大多数情况下,
this
将引用其内部的函数。在这个场景中,这只是
testfunction
,所以很自然地,它只会给出该函数的本地结果

关于理解此有各种教程可供选择:

  • 关于堆栈溢出:
  • 怪癖模式:
  • Mozilla开发者网络:

在您的场景中,获取一个对象并返回其键。如果您想要
对象的键
,您需要给它(尽管我已经重命名了您的变量):

var foo={
“钥匙”:{
func:function(){

console.log(Object.keys(foo))/JavaScript
这个
关键字有点不寻常-它会根据调用函数的方式而变化,大多数时候,
这个
会引用它里面的函数。在这个场景中,这只是
测试函数
,所以它自然只会给你局部的结果行动

关于理解此有各种教程可供选择:

  • 关于堆栈溢出:
  • 怪癖模式:
  • Mozilla开发者网络:

在您的场景中,获取一个对象并返回其键。如果您想要
对象的键
,则需要为其提供该键(尽管我已重命名了变量):

var foo={
“钥匙”:{
func:function(){
console.log(Object.keys(foo));//您只需执行以下操作:

var object = {
    'testkey': {
        testfunction: function() {
            // will return testfunction
            console.log(Object.keys(object));
        }
    }
};
因为在函数范围内,您可以看到全局变量“object”

您只需执行以下操作:

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

因为在函数范围内,您可以看到全局变量“object”

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

您可以使用apply或call方法保留调用者的作用域

函数doStuff(ob){
ob[Object.keys(ob)]['testfunction'].call(ob);
}
多斯塔夫({
“测试密钥”:{
testfunction:function(){
//将返回testkey
log(Object.keys(this));
}
}

});
如果您知道在javascript对象内部调用哪个方法,那么您可以这样做

您可以使用apply或call方法保留调用者的作用域

函数doStuff(ob){
ob[Object.keys(ob)]['testfunction'].call(ob);
}
多斯塔夫({
“测试密钥”:{
testfunction:function(){
//将返回testkey
log(Object.keys(this));
}
}

});
对象。键(对象)
@AndréDion谢谢。这对我的示例很有效。但是如果对象是函数的参数,没有名称怎么办?你能用一个更接近你的问题的示例更新你的问题吗?我可能错了,因为我觉得内部函数与你可以使用的外部对象没有链接。我改变了示例,再次感谢
Object.keys(Object)
@AndréDion谢谢。这对我的示例很有效。但是如果对象是函数的参数,没有名称怎么办?你能用一个更接近你的问题的示例更新你的问题吗?我可能错了,因为我觉得内部函数与你可以使用的外部对象没有链接。我改变了这个例子,再次谢谢你