[英]What are the arguments to this javascript factory assigned to?
我试图理解这个JavaScript模式是如何工作的,它是括在括号中的整个库。 我的理解是括号是一种范围变量的方法,但内部是一个接受参数(global,factory)的函数。
我试过搜索这种模式是如何工作但却找不到任何东西。
代码体返回一个可以在别处使用的对象,但是我不明白global
和factory
完成的参数的目的是什么。
我一直在阅读有关机箱和匿名功能的内容,但无法找到有关这样定义的机箱的任何信息。
(function (global, factory) {
global.className = factory();
} (this, function () {
ObjectName.prototype = function() {
/* some code */
}
var data = {
getUsefulData: function(obj) {
return new ObjectName(obj, 'usefuldata');
}
}
return data;
})
);
问题:
你所看到的是一个带有两个参数的IIFE(一个立即调用的函数表达式) 。 考虑这个例子:
const x = (function(a, b) { return a + b; })(5, 6); // x === 11
参数global
被分配的争论this
(其中,在顶层使用时,为达到一个普遍的方式全局对象, window
的浏览器和global
对Node.js的 ),第二个参数factory
被分配的大(二)功能。
然后,IIFE将factory
函数的结果(实际上是库代码)放在className
键下的全局对象(在此模式中也称为命名空间)。
这是Revealing Module Pattern的变体,只有从factory
函数返回的内容将被放置在global.className
,允许您拥有“私有”变量和函数,这些变量和函数不会被公开,但仍然可以被“public”访问对象。
(function(global, factory) {
global.myModule = factory();
}(this, function() {
const privateMessage = 'secret';
function secret() {
return privateMessage;
}
function open() {
return 'Message: ' + secret();
}
return { open };
}));
window.myModule.open(); // Message: secret
// no way to directly access privateMessage or secret().
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.