javascript - 将 'with' 替换为立即函数

标签 javascript

我正在重构一些代码:

with (form.proxy_settings) {
      PutValue("Usage", 1);
      PutValue("Server", 2);
      PutValue("ServerPort", 3);
      PutValue("Login", 3);
}

我想删除with。我应该这样做吗?

(function() {
      ps.PutValue("Usage", 1);
      ps.PutValue("Server", 2);
      ps.PutValue("ServerPort", 3);
      ps.PutValue("Login", 3);
}(form.proxy_settings);

或者在这种特殊情况下,简单地将 form.proxy_settings 添加到需要的位置会更好吗?

最佳答案

首先,如果您使用函数,则需要声明参数ps:

(function(ps) {
      ps.PutValue("Usage", 1);
      ps.PutValue("Server", 2);
      ps.PutValue("ServerPort", 3);
      ps.PutValue("Login", 3);
}(form.proxy_settings);

但是,您实际上并不需要执行函数。这也同样有效,并且是一种常见的 JavaScript 设计模式,与在每行中使用较长的名称相比,可以节省键入并提高性能:

var ps = form.proxy_settings;
ps.PutValue("Usage", 1);
ps.PutValue("Server", 2);
ps.PutValue("ServerPort", 3);
ps.PutValue("Login", 3);

关于javascript - 将 'with' 替换为立即函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19984551/

相关文章:

javascript - 从数组中拆分带有关键字的 Javascript-String

javascript - JSIL 和 DllImport

javascript - Canvas "random"弯曲形状

javascript - 从元素属性调用 Controller 函数

javascript - 无法让 JQuery 插件 Slick(旋转木马)工作

javascript - 在不失去焦点的情况下改变?

javascript - 连续的背景声音

Javascript迭代器设计模式

javascript - Flash 阻塞 javascript 事件

javascript - Html 倒计时器在页面重新加载时不起作用