我嘲笑了一些代码here
var common = common || {};
(function(NAMESPACE) {
NAMESPACE = {
isIE: function() {
return true;
}
};
main();
})(common);
function main() {
console.log(common.isIE());
return 'Hello, World!';
}
我想了解一些事情,
1)为什么这不起作用,我想这与确定范围如何"决定"有关。和IIFE,但不完全确定。
2)如何使这段代码有效?
答案 0 :(得分:5)
common
的参数传递的 NAMESPACE
需要扩展而不是分配新值。
所以Object.assign
可以提供帮助。
var common = common|| {};
(function(NAMESPACE) {
Object.assign(NAMESPACE,{
isIE: function() {
return true;
}
});
main();
})(common);
function main() {
console.log(common.isIE());
return 'Hello, World!';
}
答案 1 :(得分:0)
当你在JS中传递一个对象作为参数时,你应该记住你正在传递“by-value”它的引用。
以文字符号创建一个新对象,并将其分配给这样的参数,
NAMESPACE = {
isIE: function() {
return true;
}
};
只能将参数指向新对象 - 而不是指向您传递参数的引用的对象。
如果你说过,
NAMESPACE.isIE = function() {}
它会起作用。