Javascript 创建jQuery容器以容纳其他函数
我试图创建一个简单的类或容器来容纳一些JavaScript方法,如下所示Javascript 创建jQuery容器以容纳其他函数,javascript,jquery,jquery-plugins,Javascript,Jquery,Jquery Plugins,我试图创建一个简单的类或容器来容纳一些JavaScript方法,如下所示 var Core = (function () { var Error = { alert: function() { alert('Error => alert called'); }, display: function() { alert('Error => display called');
var Core = (function () {
var Error = {
alert: function() {
alert('Error => alert called');
},
display: function() {
alert('Error => display called');
}
};
var ajax = {
view: function(){
alert('Ajax => view called');
},
update: function(){
alert('Ajax => update called');
}
};
var call = function(){
Error.alert();
Error.display();
ajax.view();
ajax.update();
};
$(document).ready(function(){
call(); // This works fine.
}());
但由于某些原因,我无法在容器外部调用这些方法。例如,调用如下所示的函数会抛出错误
$(document).ready(function(){
Core.Error.alert(); // This doesn't work.
Core.Call(); // This doesn't work.
});
错误:未捕获类型错误:无法读取未定义的属性“Error”
我可以从容器中调用函数。我不熟悉jQuery插件的概念,如果有人能帮助我,我将不胜感激。您可以像这样导出这些方法(了解更多信息)
var Core = (function () {
...
return {
Error: Error,
Ajax: ajax,
Call: call
};
})();
Core.Error.alert();
Core.Call();
您可以导出这些方法(了解更多信息),如下所示
var Core = (function () {
...
return {
Error: Error,
Ajax: ajax,
Call: call
};
})();
Core.Error.alert();
Core.Call();
将其更改为:
var Core = {
error: {
alert: function () {
alert('Error => alert called');
},
display: function () {
alert('Error => display called');
}
},
ajax: {
view: function () {
alert('Ajax => view called');
},
update: function () {
alert('Ajax => update called');
}
},
call: function () {
Core.error.alert();
Core.error.display();
Core.ajax.view();
Core.ajax.update();
}
}
$(document).ready(function () {
Core.call(); // This works
}());
将其更改为:
var Core = {
error: {
alert: function () {
alert('Error => alert called');
},
display: function () {
alert('Error => display called');
}
},
ajax: {
view: function () {
alert('Ajax => view called');
},
update: function () {
alert('Ajax => update called');
}
},
call: function () {
Core.error.alert();
Core.error.display();
Core.ajax.view();
Core.ajax.update();
}
}
$(document).ready(function () {
Core.call(); // This works
}());
Error、ajax、call是私有变量/函数,而不是核心的属性。注意:在DOM就绪处理程序函数的末尾有一些未使用的
()
。这不是IIFE。错误、ajax、调用是私有变量/函数,而不是核心的属性。注意:在DOM就绪处理程序函数的末尾有一些未使用的()
。这不是一个生命。在DOM就绪处理程序的末尾(啊,和OP一样)似乎有一些额外的结束()
。在DOM就绪处理程序的末尾(啊,和OP一样)似乎有一些额外的结束()
。