我有多个“蝙蝠侠”实例,需要在“蝙蝠侠”中调用嵌套函数,来自!另一个在“蝙蝠侠”之外的功能。
这样的事情:
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不是函数。
我在做错了什么? 提前致谢! :)答案 0 :(得分:5)
hello
完全私有到每次batman
调用的上下文中。除非您以某种方式使其可用,否则您无法从其他任何地方调用它,例如通过batman
通过调用new
将其分配给您正在创建的对象的属性:< / p>
function batman(){
this.hello = function() {
console.log("hello world!");
};
}
示例:
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;
我建议您完成一些基本的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
是不必要的。