gpt4 book ai didi

javascript - 我怎样才能*解包*一个对象到一个函数的范围内?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:51:09 27 4
gpt4 key购买 nike

我有这个代码...

function a(options) {
for (var item in options) {
if ( ! options.hasOwnProperty(item)) {
continue;
}
this[item] = options[item];
}
}

a({ 'abc': 'def' });

jsFiddle .

虽然这会从对象中解压缩变量,但会将它们设置为全局范围(附加到 window),因为在那种情况下 thiswindow .

所以在函数之后我可以执行 alert(abc) 并且它会提醒 def,这是不好的。

如何将变量的范围设置为函数?

最佳答案

如果要将对象的属性放在函数的范围内,可以使用with扩展范围:

function a(options) {
with(options) {
// properties of `options` are in the scope
alert(abc);
}
}

免责声明:Make sure you read the documentation and about disadvantages of with .它应该被避免并且也被弃用了:

Using with is not recommended, and is forbidden in ECMAScript 5 strict mode. The recommended alternative is to assign the object whose properties you want to access to a temporary variable.

所以问题是为什么不坚持使用 options 呢?

关于javascript - 我怎样才能*解包*一个对象到一个函数的范围内?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5453636/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com