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.