几周以来我一直在研究框架开发,我遇到了在 lib 开发领域中强烈建议和压力的东西,即立即调用匿名函数。
我永远无法让它工作,我也找不到详细解释它背后的使用和逻辑的资源。
到目前为止,这是我所知道的:
- 它立即调用- 它立即匿名运行所有内容。
- 它是匿名的- 它没有名称,因此它内部的代码不能被外部代码“访问”。
- 你可以传递全局窗口、对象和未定义的参数——这就是我所知道的,但并不完全理解它们。
我不仅在寻找详细的资源,而且还在寻找能够解释其背后逻辑的资源。因为我觉得这很不合逻辑。
这是我所拥有的:
(function( window, document, undefined ) {
window.myThingy = myThingy;
var myThingy = function() {
};
myThingy.prototype = {
constructor: myThingy,
create: function( elementToBeCreated ) {
return document.createElement( elementToBeCreated );
}
};
})( window, document );
然后,
myThingy().create("div");
但它仍然说myThingy() [object]
不是一个函数。
我究竟做错了什么?为什么我应该使用立即调用函数而不仅仅是创建一个全局myThingy = function()
对象?为什么我必须使用window
?
我知道网上有很多关于此的资源,但我无法理解其中的任何一个。他们中的一些人半途而废,其中一些人试图深入细节,但未能解释关键的东西。为什么在开发框架时会如此强调?
别担心,我不是在尝试“重新发明轮子”,而是在尝试真正学习JavaScript,而不仅仅是预先打包的东西。
一个好的答案应该包含:
- 一个很好的资源,它解释了立即调用匿名函数背后的逻辑
- 对该链接的见解
- 我提供的代码做错了什么