javascript-匿名函数之间的区别
作者:互联网
我正在阅读更多开放源代码javascript框架,并找到了更多创建匿名函数的方法,但是有什么不同和最佳方法?
(function() {
this.Lib = {};
}).call(this);
(function() {
var Lib = {}; window.Lib = Lib;
})();
(function(global) {
var Lib = {}; global.Lib = Lib;
})(global);
解决方法:
(function() {
this.Lib = {};
}).call(this);
定义被调用对象的Lib属性,并立即在该对象(通常是窗口)上对其进行调用.它可以改为引用拥有调用该方法的对象的Object.
(function() {
var Lib = {}; window.Lib = Lib;
})();
定义window的Lib属性,而不管其在何处调用(尽管也立即调用).
(function(global) {
var Lib = {}; global.Lib = Lib;
})(global);
定义传递给函数的对象的Lib属性.它会立即被调用,但是除非您在当前作用域中为global定义了一个值,否则它将导致错误.您可以将窗口或某些命名空间对象传递给它.
这些实际上并不是定义“匿名函数”的不同方法,它们都使用标准的方式来执行此操作.这些是为全局(或有效全局)属性分配值的不同方法.从这个意义上讲,它们基本上是等效的.
例如,更为重要的是它们如何定义它们返回/构造/公开的对象的方法和属性(即,它们如何构建Lib本身).
所有这些函数都返回未定义的函数,只有第一个函数可以有用地用作构造函数(使用new),因此似乎它们只不过是框架的初始化程序.
标签:anonymous-function,javascript 来源: https://codeday.me/bug/20191101/1982853.html