var Alchemy = (function() {
function Alchemy(userConf) {
....
....
}
return Alchemy;
}) ();
可以解释Alchemy变量指向的是什么,我的意思是指向炼金术命名函数或具有Alchemy函数def的未命名函数实例
如果我们说new Alchemy(config);
答案 0 :(得分:2)
这里的部分困惑是,基本上有两个" Alchemy"变量 - 每个深度级别的闭包一个。
var x = 3;
(function() {
var x;
console.log(x) // This will be null/undefined - because it's a different X
}());
但是你的第一个理论是正确的 - 这个块的目的是创建一个命名函数Alchemy。我想在.....
中它会做其他事情来初始化这个函数变量,就像在它的原型中添加东西一样。
如果您致电new Alchemy(config)
,则config
将作为userConf
传递。 new Alchemy
调用的结果将是Alchemy
类型的新对象,this
区域内对关键字....
的任何引用都将影响所述对象。
答案 1 :(得分:0)
var connect = require('connect');
var server = connect.createServer(function(req,res){
res.write("Hello World");
res.end();
});
server.listen(8080);
将等同于名为var Alchemy
的函数,该函数接受Alchemy
参数。
答案 2 :(得分:0)
变量Alchemy将是闭包中返回的Alchemy函数。 这样做的原因之一是从全局范围隐藏该函数中的任何其他变量。
var Alchemy = (function() {
var someVar = '';
function Alchemy(userConf) {
....
....
}
return Alchemy;
}) ();
在此示例中,someVar将无法在闭包之外访问。