0
裏面我有這樣的事情:如何調用javascript函數另一個函數
var yourNamespace = {
foo: function() {
.....
},
bar: function() {
function foobar() {....
}
}
};
是否有可能爲foo內部調用,在foobar的功能欄裏面?
裏面我有這樣的事情:如何調用javascript函數另一個函數
var yourNamespace = {
foo: function() {
.....
},
bar: function() {
function foobar() {....
}
}
};
是否有可能爲foo內部調用,在foobar的功能欄裏面?
有了您的確切結構,你可以不但是你可以做這樣的事情:
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
這只是一個簡單的模塊模式。你應該做的是讓它自己的模塊,並從該模塊返回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
}
}
};
號名爲「foobar的」功能是本地分配給「欄」屬性的函數。除非「bar」外部函數中的其他代碼以某種方式暴露了「foobar」函數,否則它是私有的,不能從外部「bar」訪問。 – Pointy
簡短的回答是否定的。但是如果你對你想要達到的目標稍作解釋,我們可能會給你一些很好的建議。 – light