Hal*_*yon 8 html javascript jquery html5
我正在使用jQuery并在一个立即调用的函数表达式中包含一个函数,如下所示:
<script type="text/javascript" src="jquery-1.8.3.min.js"></script>
<script type="text/javascript">
(function ($) {
var message = 'x called';
function x() {
alert(message);
}
})(jQuery);
x();
</script>
Run Code Online (Sandbox Code Playgroud)
这将导致错误,因为函数"x"未在立即调用的函数表达式之外定义.有没有办法在立即调用的函数表达式之外调用函数"x"?
仅当您以某种方式公开该功能时.例如,您可以从外部函数返回它:
var x = (function ($) {
var message = 'x called';
function x() {
alert(message);
}
return x;
})(jQuery);
x();
Run Code Online (Sandbox Code Playgroud)
或者,类似地,您可以在对象上返回它:
var obj = (function ($) {
var message = 'x called';
function x() {
alert(message);
}
return {"x": x};
})(jQuery);
obj.x();
Run Code Online (Sandbox Code Playgroud)
函数内部声明的函数和变量不能直接从该函数外部访问,除非您通过返回某些内容提供一些访问它们的方法,或者提供对该函数外部声明的变量的引用.
为您可能想要使用的其他类或函数创建一个命名空间。您不想持续污染全局命名空间,但没有理由不能创建一个全局命名空间并将您的个人事物置于其下:
(function($){
window.MyNamespace = function(){};
var message = "Something here";
$.extend(MyNamespace, {
x: function(){
alert(message);
}
});
})(jQuery)
MyNamespace.x()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6275 次 |
| 最近记录: |