我试图理解以下两组代码之间的区别.当我使用jquery插件定义时,我能够在自封闭函数之外访问插件.但是,如果我尝试简单地使用相同的自封闭功能设置某些对象,则它不起作用.
这有效:
(function($) {
$.fn.test = function(message) {
return this.each(function() {
$(this).text(message);
});
}
}(jQuery));
$(document).ready( function() {
$('p').test('This works!');
});
Run Code Online (Sandbox Code Playgroud)
不起作用:
(function($) {
var neato={
start:function(){
$('p').html('We must have an issue of scope or similar, this does not work');
}
}
}(jQuery));
$(document).ready(neato.start);
Run Code Online (Sandbox Code Playgroud)
在这种情况下,有没有办法让我的对象在自封闭函数之外可用?
将代码放在IIFE中的全部目的是确保外部代码无法访问其中的变量.如果要访问它,则必须将其附加到在该函数作用域之外声明的变量,因此在您的示例中,全局$对象.或者,您可以将其附加到窗口:
(function ($) { ...
....
window.neato = neato;
})(jQuery);
$(document).ready(neato.start);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
62 次 |
| 最近记录: |