Javascript 为什么';这段代码行得通吗?
我已经模拟了一些代码 我想了解一些事情 1) 为什么这不起作用,我想这与范围界定是如何“决定”和生活有关,但并不完全确定Javascript 为什么';这段代码行得通吗?,javascript,scope,iife,Javascript,Scope,Iife,我已经模拟了一些代码 我想了解一些事情 1) 为什么这不起作用,我想这与范围界定是如何“决定”和生活有关,但并不完全确定 2) 如何使此代码工作?common作为名为NAMESPACE的参数传递需要扩展,而不是分配新值 因此,Object.assign可以在这里提供帮助 var common = common|| {}; (function(NAMESPACE) { Object.assign(NAMESPACE,{ isIE: function() { retu
2) 如何使此代码工作?
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!';
}
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!';
}
当您在JS中将对象作为参数传递时,应该记住您是“按值”传递它的引用 用文字符号创建一个新对象并将其分配给参数,如下所示
NAMESPACE = {
isIE: function() {
return true;
}
};
只能将参数指向新对象,而不能指向传递参数的引用的对象
如果你说,
NAMESPACE.isIE = function() {}
它会起作用。当您在JS中以参数形式传递对象时,您应该记住您是“按值”传递它的引用 用文字符号创建一个新对象并将其分配给参数,如下所示
NAMESPACE = {
isIE: function() {
return true;
}
};
只能将参数指向新对象,而不能指向传递参数的引用的对象
如果你说,
NAMESPACE.isIE = function() {}
它会起作用。你想实现什么?@JesperHøjer好吧,上面的iife代表我的助手函数,它们被包装在iife中,当我尝试访问外部函数时,我会收到一个错误,说
common。isIE
是未定义的,因为你没有向“common”-对象添加任何内容?嗯,函数main(…)
在IIFE之外。main
使用您定义为var common=common | |{}代码>不是您创建的命名空间
对象。(一旦将名称空间
作为参数x
指定给函数main(x)
并使用console.log(x.isIE());
你的调用有效。你想实现什么?@JesperHøjer好吧,上面的iLife代表我的助手函数,它们被包装在iLife中,当我尝试访问外部函数时,我收到一个错误,说common.isIE
是未定义的,因为你没有向“common”-对象添加任何内容?嗯,函数main(…)
在IIFE之外。main
使用您定义的common
变量common=common | |{};
而不是您创建的NAMESPACE
对象。(一旦您将NAMESPACE
作为参数x
来运行main(x)
,并使用console.log(x.isIE());
你的呼叫有效。将$扩展也有效吗?因为IE不支持对象。分配是$。扩展也有效吗?因为IE不支持对象。分配