Javascript库快速启动
我正在尝试构建一个Javascript库,它将为我正在构建的JQuery插件提供一些功能 我从网上搜索中得到了下面的框架代码,虽然我不太确定它是如何工作的(我知道这是一个结尾)。我通过声明添加了我的函数Javascript库快速启动,javascript,jquery,Javascript,Jquery,我正在尝试构建一个Javascript库,它将为我正在构建的JQuery插件提供一些功能 我从网上搜索中得到了下面的框架代码,虽然我不太确定它是如何工作的(我知道这是一个结尾)。我通过声明添加了我的函数 (function(window, document, $) { function func_1(){ return 1; } function func_2(){ return 2; } })(window, documen
(function(window, document, $) {
function func_1(){
return 1;
}
function func_2(){
return 2;
}
})(window, document, jQuery);
因此,我将上面的代码放在一个单独的JS文件中,然后在我的HTML页面中对其进行源代码分析,然后我试着像这样运行函数(注意:我还设置了JQuery):
$(文档).ready(函数(){
log(func_1());
});
但是,我似乎在Firebug中遇到了一些错误(ReferenceError:func_1未定义
)
我有两个问题:
className.functionName()
。如何重新构造骨架代码,使我能够执行此操作,并像这样调用我的函数:Device.func_1()
感谢您预期的帮助。我只能回答第二个问题,但您可以这样做:
var Device = {
function func_1()
{
// your first function
},
function func_2()
{
// your second function
}
};
这样你就可以直接打电话:
Device.func_1();
有帮助的跃点:)闭包用于对代码的其余部分隐藏内部函数。您需要明确公开库的公共功能:
var Device = (function(window, document, $) {
function func_1(){
return 1;
}
function func_2(){
return 2;
}
var internalDevice = {
func_1: func_1,
func_2: func_2
};
return internalDevice; // expose functionality to the rest of the code
})(window, document, jQuery);
(函数(窗口,文档,$){})(窗口,文档,jQuery)代码>部分被称为立即调用的函数表达式(IIFE)。它用于避免将所有库函数泄漏到全局范围。否则,如果其他库具有func\u 1
函数,则它将被覆盖或覆盖库的func\u 1
函数的参数用于控制库如何影响代码的其他部分并依赖它。例如,有人可能会覆盖窗口。$library,因此代码中的任何地方都不再有$。但是,由于闭包中有本地引用,您仍然可以访问它
除了使用上面的代码(返回对象)之外,您还可以将库直接分配给全局作用域:
(function(window, document, $) {
...
window.Device = internalDevice; // expose functionality to the rest of the code
})(window, document, jQuery);
当某个对象位于闭包内时,它的范围将更改为该闭包func_1
和func_2
只能在调用它们的匿名函数内部和下面看到。非常感谢!这正是我需要的。干杯
(function(window, document, $) {
...
window.Device = internalDevice; // expose functionality to the rest of the code
})(window, document, jQuery);