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谢谢。这对我的示例很有效。但是如果对象是函数的参数,没有名称怎么办?你能用一个更接近你的问题的示例更新你的问题吗?我可能错了,因为我觉得内部函数与你可以使用的外部对象没有链接。我改变了这个例子,再次谢谢你