Tom*_*aas 7 javascript scope with-statement
比如,我有一个JavaScript库来生成如下所示的DOM片段
<main>
<h1>A heading</h1>
<p>A paragraph</p>
</main>
Run Code Online (Sandbox Code Playgroud)
库,domlib
包含任何类型元素的方法,以及生成上述片段的函数可能如下所示:
function(domlib){
return domlib.main(
domlib.h1('A heading'),
domlib.p('A paragraph')
);
}
Run Code Online (Sandbox Code Playgroud)
在这个函数中,我宁愿调用这样的domlib
方法:
main(
h1('A heading'),
p('A paragraph')
)
Run Code Online (Sandbox Code Playgroud)
为实现这一目标,我可以将所有方法domlib
放在全局范围内,但我宁愿避免污染全局范围.对我而言,这似乎with
是一个理想的解决方案:
function(domlib){
with(domlib){
return main(
h1('A heading'),
p('A paragraph')
);
}
}
Run Code Online (Sandbox Code Playgroud)
虽然仍然受支持,但该with
语句实际上已弃用,并将在严格模式下抛出错误.
我没有看到很多其他选项,除了将domlib
方法分配给本地函数变量,但这很容易导致数十个局部变量的分配,在这种情况下,第一种方法(domlib
直接调用方法)将导致更简单的代码.
我的问题是,是否有其他替代方案可以实现我想要的,具有与使用with
语句类似的简单性和可读性?
我将使用的方法是通过解构明确列出我想要的元素.
例如,在你的情况下我会有这样的事情:
const component = ({main, h1, p}) => main(
h1('A heading'),
p('A paragraph')
);
Run Code Online (Sandbox Code Playgroud)
这与做的类似
const component = (domlib) => {
const {main, h1, p} = domlib;
return main(
h1('A heading'),
p('A paragraph')
);
};
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1448 次 |
最近记录: |