如何从外部函数调用嵌套函数

时间:2017-12-13 10:23:59

标签: javascript

我有多个“蝙蝠侠”实例,需要在“蝙蝠侠”中调用嵌套函数,来自!另一个在“蝙蝠侠”之外的功能。

这样的事情:

var a = new batman();
var b = new batman();
var c = new batman();
robin();


function batman(){
    function hello(){
        console.log("hello world!");
    }
}

function robin(){
    a.hello();
}

我收到错误:a .hello不是函数。

我在做错了什么? 提前致谢! :)

2 个答案:

答案 0 :(得分:5)

hello 完全私有到每次batman调用的上下文中。除非您以某种方式使其可用,否则您无法从其他任何地方调用它,例如通过batman通过调用new将其分配给您正在创建的对象的属性:< / p>

function batman(){
    this.hello = function() {
        console.log("hello world!");
    };
}

示例:

&#13;
&#13;
var a = new batman();
//var b = new batman();
//var c = new batman();
robin();

function batman(){
    this.hello = function() {
        console.log("hello world!");
    };
}

function robin(){
    a.hello();
}
&#13;
&#13;
&#13;

我建议您完成一些基本的JavaScript教程和/或书籍,以便更好地了解工作原理。

答案 1 :(得分:1)

有很好的js模式,你可以找到如何编写一个好的js代码,你可以像这样中调你的代码:

var a = new batman('a');
var b = new batman('b');
var c = new batman('c');
robin();

function batman(str){
    function hello(){
        console.log("hello world! Called from: "+str);
    }
    return {
        hello : hello
    };
}

function robin(){
    a.hello();
}

Learning JavaScript Design Patterns
P.S :在此模式中,基于您的代码new是不必要的。