长话短说,我有一个使用 jQuery 的长代码。很多文件、函数等。我们的代码中遇到问题的用户数量并不理想,因为他们安装的一些插件、工具栏等会破坏我们的 JavaScript 代码,因为 jQuery 被包含了两次,诸如此类的讨厌的东西。
我以为我可以
- 包含 jQuery
- 使用$.noConflict
- 然后将我的其余代码包含在以下内容之间:
.
(function($) {
// All of my code goes here.
})(jQuery);
我还没有检查这是否解决了我们与这些用户的问题,但它确实有效。问题是,在网站的一部分(图像上传)中,我们有一个 iframe,需要调用我们大块代码中定义的一些函数。我尝试将这些函数从这个未命名的函数调用中取出,但它本身使用了必须存在的其他函数。
关于如何从函数外部的代码访问该函数内部定义的函数(如上所示),有什么想法或解决方法吗?
谢谢!
最佳答案
您无法从“外部世界”访问函数上下文。好吧,准确地说,您可以在一些旧的 js 引擎中执行此操作,这些引擎允许访问 .__parent__
属性,但它已经过时并且不再可用。
但是,您需要在闭包中公开一些函数,或者创建一个命名空间对象,在其中编写所有逻辑(该对象也必须在父上下文中可用)。
所以我建议类似
(function( $ ) {
function myFunc() {
// do stuff
}
function anotherFunc() {
}
window.myFunc = myFunc; // expose myFunc globally
}( jQuery ));
也许更好:
var myNameSpace = { };
(function( $ ) {
myNameSpace.myFunc = function() {
// do stuff
};
}( jQuery ));
// somewhere else
myNameSpace.myFunc();
关于javascript - 从全局范围访问函数内部定义的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8942346/