Javascript 用变量括号调用对象中的子函数
我需要一个通用的解决方案。有人能解释一下为什么Javascript 用变量括号调用对象中的子函数,javascript,Javascript,我需要一个通用的解决方案。有人能解释一下为什么sub.myFunction不起作用吗?有人有办法解决这个问题吗?在javascript中,只要用引号括起来,字符就是属性名的有效部分 这对你意味着什么: myObject[“sub.myFunction”]-在myObject上查找名为sub.myFunction的属性。它不会在myObject的sub属性上查找名为myFunction的属性 myObject.sub.myFunction-在引号中没有,因此它被视为属性访问器。这意味着我们在my
sub.myFunction
不起作用吗?有人有办法解决这个问题吗?在javascript中,只要用引号括起来,
字符就是属性名的有效部分
这对你意味着什么:
-在myObject[“sub.myFunction”]
上查找名为myObject
的属性。它不会在sub.myFunction
的myObject
属性上查找名为sub
的属性myFunction
-在引号中没有myObject.sub.myFunction
,因此它被视为属性访问器。这意味着我们在
的myObject
属性上查找sub
属性myFunction
'sub.myFunction'
会起作用吗?我不认为你可以使用[]
进行双重访问(从myObject
访问sub
和sub
访问myFunction
)。您可以使用两个[]
,每个访问一个。“有人能解释一下sub.myFunction不工作的原因吗?”因为myObject
没有名为sub.myFunction
的属性。它有一个名为sub
的属性,它引用了另一个对象,该对象有一个名为myFunction
的属性。此外,扩展一下:缩进首先要做什么?因为这个问题没有多大意义,也就是说,这解决不了你应该有的问题。如果你有这个问题,很可能是你的方法本身有问题。@T.J.Crowder另一个问题并没有真正解决为什么像“sub.myFunction”
这样的简单字符串无法访问js中的属性。我想这是OP的主要问题。
var myObject = {
sub: {
myFunction: function() {
console.log('check');
}
}
}
var callFn = 'sub.myFunction'; // I want it to solve it here, whats going wrong?
myObject[callFn](); // Works, but not with 'sub.myFunction'
myObject.sub.myFunction(); // This works ofc.