对象中的Javascript访问对象方法

对象中的Javascript访问对象方法,javascript,object,module,Javascript,Object,Module,首先,我知道在this的帮助下,可以访问javascript对象中的属性或方法,但在我的示例中有些东西不起作用 module.exports = { explanations: { '--help': 'show help', '--connection': 'list connections' }, connections: { 'a': '1', 'b': '2', 'c': '3'

首先,我知道在
this
的帮助下,可以访问javascript对象中的属性或方法,但在我的示例中有些东西不起作用

module.exports = {
    explanations: {
        '--help': 'show help',
        '--connection': 'list connections'
    },
    connections: {
        'a': '1',
        'b': '2',
        'c': '3'
    },
    manPageOfObject: function(object) {
         var output = '';
         var keys = Object.keys(object);
         for (var i in keys) {
              output += keys[i] + ': ' + object[keys[i]] + '\n';
         }
         return output;
   },
   manPages: {
       '--help': function() { return this.manPageOfObject(this.explanations); }
       '--connections': function() { return this.manPageOfObject(this.connections); }
   }
}
函数
manPageOfObject
应返回对象的字符串/“manpage”

然后我想打印一个“手册页”,如:

但是有些东西工作不正常,我得到错误
这个。manPageOfObject
不是一个函数。但我很确定这是一个,不是吗


谢谢你的帮助。谢谢。

您有嵌套对象,这意味着您没有一个上下文

manPageOfObject
位于
myModule
中。因此,对于要查找
manPageOfObject
的函数,它必须具有
myModule
对象作为上下文(作为
this

现在,
manPage
是它自己的对象。它没有
手册页对象
属性。因此,如果您只是执行
manPage.something()
,而
something()
尝试使用
manPageOfObject
属性,它将找不到它,因为
manPage
没有属性

您必须将
myModule.manPage['--help']
绑定到
myModule
myModule.manPage['--help'].bind(myModule)
)才能在
中选择
manPageOfObject

var myModule={
说明:{
“--help”:“显示帮助”,
“--连接”:“列出连接”
},
连接:{
“a”:“1”,
‘b’:‘2’,
‘c’:‘3’
},
手册页对象:函数(对象){
var输出=“”;
var keys=Object.keys(Object);
for(键中的变量i){
输出+=键[i]+':'+对象[keys[i]]+'\n';
}
返回输出;
},
主页:{
“--help”:函数(){
返回this.manPageOfObject(this.exclusions);
},
“--connections”:函数(){
返回this.manPageOfObject(this.connections);
}
}
};
var manPage=myModule.manPage['--help'].bind(myModule);

log(manPage())尝试运行时会出现什么错误?这可能是一个很好的暗示

var manPage = myModule.manPages['--help'];
                               ^
TypeError: Cannot read property '--help' of undefined

你打错了。您正在导出
手册页
而不是
手册页
。您的下一个问题将是此
来自何处。

可能与范围问题重复。尝试
console.log(manPage().bind(this))
console.log(manPage())上的结果相同解决了它!谢谢你的帮助,解释得很好。修正了错误,谢谢@acdcjunior为“此”问题提供了解决方案。
var manPage = myModule.manPages['--help'];
                               ^
TypeError: Cannot read property '--help' of undefined