我试图调用bar
内的foo
功能,但我似乎无法弄明白该怎么做。我错过了什么或者我不理解什么?
var foo = function() {
function bar() {
alert('bar');
}
};
$.fn.mainfoo = function() {
alert('mainfoo');
return this.each(function(key, value) {
if ($(this).data('mainfoo')) return $(this).data('mainfoo');
var mainfoo = new foo();
$(this).data('mainfoo', mainfoo);
});
};
var myfoo = $('body').mainfoo();
try {
myfoo.data('mainfoo').bar();
} catch (e) {
alert(e);
}

答案 0 :(得分:3)
更改bar
,使其成为foo
的属性:
var foo = function(){
this.bar = function() {
alert('bar');
}
};
$.fn.mainfoo = function() {
alert('mainfoo');
return this.each(function(key, value){
if ($(this).data('mainfoo')) return $(this).data('mainfoo');
var mainfoo = new foo();
$(this).data('mainfoo', mainfoo);
});
};
var myfoo = $('body').mainfoo();
myfoo.data('mainfoo').bar();

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
答案 1 :(得分:0)
你有一点疏忽,内心如何访问foo里面的bar方法。所以你需要从foo返回任何内容,将是一个对象和内部bar方法。 这是一个demo,很少有你的感动:
var foo = function(){
return {
bar: function() {
alert('bar');
}
}
};
$.fn.mainfoo = function() {
console.log('mainfoo');
return this.each(function(key, value){
if ($(this).data('mainfoo')) return $(this).data('mainfoo');
var mainfoo = new foo();
$(this).data('mainfoo', mainfoo);
});
};
var myfoo = $('body').mainfoo();
try{
myfoo.data('mainfoo').bar();
}catch(e){
console.log(e);
}
答案 2 :(得分:0)
两种方式
var foo = function(){
return {
bar: function(){ alert('bar')}
};
};
jQuery.fn.mainfoo = function() {
///
var mainfoo = foo();
///
};
其他方式
var foo = function(){
this.bar = function() {
alert('bar');
}
};
$.fn.mainfoo = function() {
var mainfoo = new foo();
};