在javascript中从外部访问函数中的函数
我有一个嵌套函数,我想从外部调用它在javascript中从外部访问函数中的函数,javascript,jquery,Javascript,Jquery,我有一个嵌套函数,我想从外部调用它 var _Config = ""; var tourvar; function runtour() { if (_Config.length != 0) { tourvar = $(function () { var config = _Config, autoplay = false, showtime, step
var _Config = "";
var tourvar;
function runtour() {
if (_Config.length != 0) {
tourvar = $(function () {
var config = _Config,
autoplay = false,
showtime,
step = 0,
total_steps = config.length;
showControls();
$('#activatetour').live('click', startTour);
function startTour() {
}
function showTooltip() {
}
});
}
}
function proceed() {
tourvar.showTooltip();
}
$(document).ready(function () {
runtour();
});
我希望通过tourvar.showTooltip()调用它;但是我似乎错了:)我怎样才能使showTooltip()从函数外部可用?因为我以前的答案确实是个头脑发热的答案,所以我决定删除它并提供另一个答案:
var _Config = "";
var tourvar;
// Module pattern
(function() {
// private variables
var _config, autoplay, showtime, step, total_steps;
var startTour = function() { };
var showTooltip = function() { };
// Tour object constructor
function Tour(config) {
_config = config;
autoplay = false;
step = 0;
total_steps = _config.length;
// Provide the user with the object methods
this.startTour = startTour;
this.showTooltip = showTooltip;
}
// now you create your tour
if (_Config.length != 0) {
tourvar = new Tour(_Config);
}
})();
function proceed() {
tourvar.showTooltip();
}
$(document).ready(function () {
runtour();
});
$
的作用是什么?是因为您使用了jQuery还是其他库?在这种情况下,它是哪个库?只需在外部声明函数即可。没有理由在其他函数中声明它。tourvar.showTooltip=function(){…}
(尽管您必须使用本机JS对象,而不是jQuery包装的对象)。仅供参考:$(function(){})
是$(document.ready(function(){})的缩写代码>。因此,当您执行tourvar=$(function(){
)时,您正在将tourvar
设置为$(document)
。感谢您的响应…我做了一些轻微的更改,但没有定义一个巡更。如果(_Config.length!=0){tourvar=new Tour(_Config);tourvar.showControls()},我将移动在函数runtour中,它应该启动巡更,showcontrols函数应该显示控件。我在函数tour()中声明了showcontrols变量。Anway,当我运行tour()时我得到旅游是未定义的。排序它…99%你的代码…唯一的其他事情是因为我已经编辑了一些…谢谢你的帮助…现在更了解这一点。很高兴它有帮助。只是为了让其他人澄清,问题是旅游()构造函数在模块外部不可见。我修改了示例,现在它应该尽可能易于使用,请务必查看:
function outerFunction() {
window.mynestedfunction = function() {
}
}
mynestedfunction();