使用可变括号调用对象中的子函数

时间:2015-12-27 12:18:47

标签: javascript

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.

我需要一个通用的解决方案。有人能解释为什么sub.myFunction不起作用吗?有没有人有解决方法来解决这个问题?

1 个答案:

答案 0 :(得分:0)

.字符是javascript中属性名称的有效部分,只要您将其括在引号中即可。

这对您意味着什么:

  • myObject["sub.myFunction"] - 在sub.myFunction上查找名为myObject的媒体资源。它myFunction的{​​{1}}属性上查找名为sub的属性。

  • myObject - 引号中没有myObject.sub.myFunction,因此它被视为属性访问器。这意味着我们会在.的{​​{1}}属性上查找myFunction属性。