我一直在尝试将方法和变量附加到具有自调用匿名函数的对象的方法,并遇到了一些我不理解的行为。
我在函数之前定义变量并将其作为参数传递,方法附加到引用,但在外部,name
仍然未定义。
var name;
(function(exports) {
exports = {};
exports.method = function() {
// do stuff
};
})(name);
alert(name === undefined); // true
但是,当变量在函数外部初始化时,而不是在正确的属性内部,正如我所期望的那样。
var name2 = {};
(function(exports) {
exports.method = function() {
// do stuff
};
})(name2);
alert(name2 === undefined); // false
alert(name2.method); // method is defined
为什么?