我有这样的事情:
var yourNamespace = {
foo: function() {
.....
},
bar: function() {
function foobar() {....
}
}
};
是否有可能在foo内部调用,bar内的foobar函数?
答案 0 :(得分:2)
这只是一个简单的模块模式。你应该做的是使它成为自己的模块,并从该模块返回foobar。例如:
var yourNamespace = {
foo: function() {
this.bar.foobar();
},
bar: {
abc: '',
foobar: function() {
console.log('do something');
}
}
};
或者你可以做更像这样的事情:
var yourNamespace = {
foo: function() {
var bar = this.bar();
},
bar: function() {
var abc = '';
function foobar() {
console.log('return abc or do something else');
return abc;
}
return {
foobar: foobar
}
}
};
答案 1 :(得分:1)
根据您的确切结构,您无法做到这样的事情:
var yourNamespace = {
foo: function() {
.....
yourNamespace.foobar()
},
bar: function() {
function foobar() {....}
yourNamespace.foobar = foobar;
}
};
或更好,(IMO):
var yourNamespace = {
foo: function() {
.....
yourNamespace.bar.foobar()
},
bar: function() {
yourNamespace.bar.foobar = function() {....}
}
};
请注意:在这两种情况下,bar()
必须在foo()
之前运行,否则foobar
为undefined